首先,可以通过isnull 和 notnull 方法查看有哪些NaN值,这两个方法返回的布尔值,指示该值是否是NaN值,结合sum 方法可以获取每列空值的数目以及总数。...all' 指明要这一列全部是nan值才删除,axis 案列操作 print("del rows is all NaN\n", df.dropna(axis = 'rows', how='all'))...# axis 按行操作,how 原理同上 # 同时可以添加条件删除 print(df.dropna(axis = 1, thresh = 2)) # axis=1按列操作,thresh 指示这一列或行中有两个或以上的非...取出现NaN值的前一列或前一行的数据来填充NaN值,向后同理 # 在df 的e 这一列上操作,默认下按行操作,向前填充数据,即取e列中最近的一个不为NaN值来填充接下去的NaN值 df["e"].fillna...agg的形参是一个函数会对分组后每列都应用这个函数。
返回每一列的最大值 df.min() # 返回每一列的最小值 df.median() # 返回每一列的中位数 df.std() # 返回每一列的标准差 df.var() # 方差 s.mode() #...col进行分组的Groupby对象 df.groupby([col1,col2]) # 返回一个按多列进行分组的Groupby对象 df.groupby(col1)[col2] # 返回按列col1进行分组后...,列col2的均值 # 创建一个按列col1进行分组,并计算col2和col3的最大值的数据透视表 df.pivot_table(index=col1, values=[col2...col1分组的所有列的均值 # 按列将其他列转行 pd.melt(df, id_vars=["day"], var_name='city', value_name='temperature') # 交叉表是用于统计分组频率的特殊透视表...,index 是 datetime 时间类型 df.groupby(by=df.index.date).agg({'uu':'count'}) # 按周汇总 df.groupby(by=df.index.weekday
df.sort_index(axis=1, ascending=False) 通过某一列的数值排序 df.sort_values(by='B') import pandas as pd df = pd.read_csv.../query_result.csv', sep=',') # 转为日期型 df['gpstime'] = pd.to_datetime(df['gpstime']) # 按某一列排序 df.sort_values...(['gpstime']) 选择 选择某一列 df['A'] 选择某几行 df[0:3] #也可以通过行的索引来选择,但是不能单独写某一行 df['20130102':'20130104'] 选择几列转为矩阵...('gpstime') df['2018-04-22 01:00:00': '2018-04-22 05:00:00'] 某一列按条件过滤 # python2适用 nightdf = nightdf[nightdf...而 drop_duplicates方法,它用于返回一个移除了重复行的DataFrame 这两个方法会判断全部列,你也可以指定部分列进行重复项判段。
merge方法:左连接、右连接,是不是和数据库的合并(join)相似 applymap() eval() 列提取,第一列 ?...按列名提取数据 a['Time(hh:mm:ss)'],其中引号内的信息可以自动填补 重新排列索引 df1.reset_index(drop=True, inplace=True) 选取特定行 temp...,last 代表保存后面那个 想要从一个数组中删除另一个数组,两个办法,一个是减法,一个是加法 上面是加法,下面是减法 ?...Pandas groupy分组计算 a1=dfarr[dfarr.pm25!...c=pd.to_datetime(b['Date(dd:mm:yyyy)'],format='%d:%m:%Y') d=c.dt.year 合并到b中 如果是不知道怎么把数据转化成标准的时分秒格式,如:
数据 为了说明这是如何工作的,让我们假设我们有一个简单的数据集,它有一个datetime列和几个其他分类列。您感兴趣的是某一列(“类型”)在一段时间内(“日期”)的汇总计数。...重要的是分组,然后按日期时间计数。...现在,我们不想创建一个包含一系列数据的图形,而是要创建一个空白画布,以后再添加到其中。如果运行以下代码,则将按字面值返回一个空白画布。...读取和分组数据 在下面的代码块中,一个示例CSV表被加载到一个Pandas数据框架中,列作为类型和日期。类似地,与前面一样,我们将date列转换为datetime。...4 b 2016-03-31 3 5 a 2016-03-31 6 6 b 2016-04-30 1 ... """ 以前我们只按一列计数排序
类:** 查询概况 去重set操作 随机抽样 --- 1.2 列元素操作 --- **获取Row元素的所有列名:** **选择一列或多列:select** **重载的select方法:** **还可以用...**其中,monotonically_increasing_id()生成的ID保证是单调递增和唯一的,但不是连续的。...count() —— 计算每组中一共有多少行,返回DataFrame有2列,一列为分组的组名,另一列为行总数 max(*cols) —— 计算每组中一列或多列的最大值...mean(*cols) —— 计算每组中一列或多列的平均值 min(*cols) —— 计算每组中一列或多列的最小值 sum(*cols) —— 计算每组中一列或多列的总和 —...使用的逻辑是merge两张表,然后把匹配到的删除即可。
则值为 是,反之为否 df['金牌大于30'] = df['金牌数'].apply(lambda x : '是' if x >30 else '否') df['金牌大于30'] = np.where(...df['金牌数']>30,'是','否') 13-数据增加|增加多列 新增两列,分别是 金铜牌总数(金牌数+铜牌数) 银铜牌总数(银牌数+铜牌数) df.assign(金铜牌数量=df.金牌数+df.铜牌数...','education'])['salary'].mean()).rename_axis(['工作年限','教育']) 14 - 分组转换| transform 在原数据框 df 新增一列,数值为该区的平均薪资水平...支持的时间格式 df1['日期'] = pd.to_datetime(df1['日期']) df2['时间'] = pd.to_datetime(df2['时间']) 13 - 日期筛选|区间 筛选出...涨跌,计算前后两日收盘价之差 注意:虽然我们的df1包含涨跌额列,但是这个操作很常用,所以练习一下 df1.收盘.diff() 16 - 金融计算|涨跌幅 df1 新增一列 涨跌变化率,计算前后两日收盘价之差的变化率
A4:按照月份m进行排序 A5:新增一列,如果月份等于前一行的月份,则计算增长比并赋值,否则赋值null,将该列命名为yoy。...df.reset_index(drop)重建索引,drop=True表示丢掉原来的索引,否则把原来的索引当做一列插入。...B7:定义b,c两个变量,b作为OPEN字段的初始值, B8:建立新表,其中STOCKID为A6的STOCKID,将时间序列B5按顺序插入新序表,作为新字段DATE,c作为OPEN字段,将B6中的ENTER...这里表示根据分组子集A3新建二维表,其中~.m(1)表示取各组首行,~.m(-1)表示取各组尾行。...python pandas的dataframe结构是按列进行存储的,按行循环时就显得特别麻烦。
=['int', 'datetime', 'object']).head() 3....两种方式:删除和替换。...同样以泰坦尼克数据集为例,里面有一列是年龄特征age: import seaborn as sns # 导出泰坦尼克数据集 df = sns.load_dataset('titanic') df['age...'].head() 年龄是一段连续值,如果我们想对它进行分组变成分类特征,比如(60,老人),可以用cut方法实现: import sys...可以看到新增了一列ageGroup,用以展示年龄分组: df['ageGroup'].head() 6.
(1)应答率 应答率=应答订单数/呼叫订单数 呼叫订单: 呼叫订单数等于呼叫时间(call_time)这一列的数据总数,可以用count(call_time)汇总。...应答订单:应答订单数等于应答时间(grab_time)这一列的数据总数,可以用count(grab_time)汇总。需要注意,这一列里的值不等于‘1970’的数据的数量才是有效的应答订单数。...这涉及到计算两个日期之间的差值,《猴子 从零学会sql》里讲到对应单函数是timestampdiff。下图是这个函数的用法。...新增一列来表示时间中的“小时”,列名设为call_time_hour。...按“每个小时”分组(group by call_time_hour),然后统计每个小时的呼叫订单量count(order_id),然后排序就可以知道哪个小时的订单量最高。
两种方式:删除和替换。...同样以泰坦尼克数据集为例,里面有一列是年龄特征age: import seaborn as sns # 导出泰坦尼克数据集 df = sns.load_dataset('titanic') df['age...年龄是一段连续值,如果我们想对它进行分组变成分类特征,比如(60,老人),可以用cut方法实现: import sys df['ageGroup...注意:这里的sys.maxsize是指可以存储的最大值。 可以看到新增了一列ageGroup,用以展示年龄分组: df['ageGroup'].head() ? 6....「列合并」 假设数据集按列分布在2个文件中,分别是data_row_1.csv和data_row_2.csv ?
2.Excel制作过程 结合以上两张图,我们知道利用Excel的数据透视表功能就制作该报表:选中数据表中任意一个单元格,点击插入数据透视表,然后按以下步骤执行: 将合同生效日字段放在页区域(筛选今年)...此时大部分人都会想到先在数据源表格中添加三列按分成比例分成以后的贷款金额。 ?...这里解释一下import datetime和from datetime import datetime的区别。datetime 是模块,而datetime模块里面还包含一个datetime类。...在我们的例子中,需要将三个表的单位及分成比例字段追加在同一列。但是目前三个新表中的单位及分成比例字段名字是不一致的,不能直接追加。所以我们需要先将分表的名字统一。...接下来一步是计算分成贷款金额,即:我们需要插入一列,使其等于贷款金额列剩余分成比例。
Bamboolib是那种会让你想:我以前怎么不知道这些?是啊,听起来有点夸张,但相信我,你会大吃一惊的。Bamboolib可以为需要一段时间才能编写的内容构建代码,比如复杂的按子句分组。...我是认真的。要将数据集导入到您的Jupyter Notebook,键入bam,它将显示一个UI,您可以在其中单击三次即可导入数据集。...数据准备 将字符串更改为datetime 您加载了数据,并意识到日期列是一个字符串。然后,单击列类型(列名称旁边的小字母),选择新的数据类型和格式,如果需要的话,可以选择一个新的名称,然后单击执行。...只需搜索rename,选择要重命名的列,写入新的列名,然后单击执行。您可以选择任意多的列。 将一个字符串分割 假设您需要将一列人的名字分成两列,一列写名,另一列写姓。这很容易做到。...提取datetime属性 如果您想从日期列中提取一个字符串,比如星期和月份,您知道代码吗,还是必须谷歌一下?有了BambooLib,这两种都不需要。
从前几行我们可以看到,数据集有两列,第一列表示“yyyy - mm”格式的日期列和具有实际观测值的值列。...记住,我们还不知道它是否是一个时间序列对象,我们只知道它是一个具有两列的dataframe。 df.info() ? 这个摘要确认了它是一个包含两列的panda dataframe。...第一列是一个对象,第二列是一个整数。 它不显示任何时间维度,这是因为Month列存储为字符串。因此,我们需要将其转换为datetime格式。...这样做的好处是您可以以任何方式过滤/切片数据:按年、月、日、工作日、周末、特定的日/月/年范围等等。...最后一个好的实践是从datetime索引中提取年份、月份和工作日,并将它们存储在单独的列中。这给了一些额外的灵活性,“分组”数据根据年/月等,如果需要。
,它所得出的直接结果是一列数据。...df.isnull().sum() # 按列统计 A 2 B 3 C 1 dtype: int64 df.isnull().sum(axis=1) # 按行统计 0 0 1...'d': 4}} 可以看到转换后我们想要的字典被包含在另一个字典里,而那个字典的键就是另一列(B列)的列名: df.set_index('A').to_dict()['B'] {'a': 2, 'b':...另外需要注意的是,有些年份只用两位数,如17代表2017年,这时在format中要使用%y作为占位符,而不是%Y,否则会报错。...-6,其中0代表星期一。
'w'列,返回的是DataFrame类型 data[['w','z']] #选择表格中的'w'、'z'列 #---2 利用序号寻找列--------- data.icol(0) #取data的第一列...) =R=apply(df,2,mean) #df中的pop,按列求均值,skipna代表是否跳过均值 这个跟apply很像,返回的是按列求平均。...(['A','B']).sum()##按照A、B两列的值分组求和 Out[203]: C D A B bar one 1 9 three...()##按照A列的值分组B组计数 Out[210]: A bar 3 foo 5 Name: C, dtype: int64 2、Apply 函数 在向数据框的每一行或每一列传递指定函数后...————————————————————————————————————- 七、其他 1、组合相加 两个数列,返回的Index是两个数据列变量名称的;value中重复数据有值,不重复的没有。
Pandas 为 Python 带来了两个新的数据结构,即 Pandas Series(可类比于表格中的某一列)和 Pandas DataFrame(可类比于表格)。...python df.rename(columns={'one':'第一列'}) out: 第一列 two F T a 1 2 9 8 b 3 4 10 8...其参数如下: value:用来替换NaN的值 method:常用有两种,一种是ffill前向填充,一种是backfill后向填充 axis:0为行,1为列...列进行分组,聚类 5、数据清理 python #删除某行 df.drop(['row_name'],inplace = True)#若添加inplace = True,修改后的数据会覆盖原始数据 #删除某列...#删除重复值 drop_duplicates(inplace = True) #更改某行/列/位置数据 用iloc或者loc直接替换修改即可 #更改数据类型 df['datetime_col'] = pd.to_datetime
1.分组键是列名 分组键是列名时直接将某一列或多列的列名传给 groupby() 方法,groupby() 方法就会按照这一列或多列进行分组。...参数: ①分组键是列名: 单个列名直接写(按一列进行分组),多个列名以列表的形式传入(这就是按多列进行分 组)。...""" (1)按一列进行分组 import pandas as pd df = pd.DataFrame([[99,"A类","一线城市","是",6,20,0],...df.groupby("客户分类")["7月销量"].sum() ---- 2.分组键是Series 把DataFrame的其中一列取出来就是一个Series ,如df["客户分类"]。...,这时就可以把想要计算的列 df.groupby([df["客户分类"],df["区域"]])["8月销量"].sum() 总结: 上述两种方法无论分组键是列名,还是分组键是Series,最后结果都是一样的
,作为行 columns: 指定了要分组的类目,作为列 rownames/colnames: 行/列的名称 aggfunc: 指定聚合函数 values: 最终在聚合函数之下,行与列一同计算出来的值 normalize...这里我们将省份指定为行索引,将会员类型指定为列,其中顾客类型有“会员”、“普通”两种,举例来说,四川省的会员顾客有26名,普通顾客有35名。...江苏 18 15 33 浙江 119 111 230 黑龙江 14 17 31 All 501 499 1000 你也可以给汇总的那一列重命名,用到的是...%M 表示的是分钟数 (00-59) %S 表示的是秒数(00-59) %w 表示的是星期数,一周当中的第几天,从星期天开始算 %W 表示的是一年中的星期数 当然我们进行数据类型转换遇到错误的时候,pd.to_datetime...mix_col'], errors='coerce').astype('Int64') df['mix_col'].dtypes output Int64Dtype() 而对于"money_col"这一列
领取专属 10元无门槛券
手把手带您无忧上云