今天偶然发现,当有空值时,groupyby会自动删除整行,也就是说不会显示出有空值得分组变量,我们得解决办法就是填充空值。
直接上代码了:
import pandas as pd
import numpy as np
data = pd.read_excel('C:\\Users\\17621802479\\Desktop\\源数据.xlsx',sheet_name='元数据')
print(data)
gr1=data.groupby(by='卡别').agg({'金额':sum})
print('\n')
print('分组后自动剔除NaN的行------\n',gr1)
data=data.fillna('空值')
print(data)
gr2=data.groupby(by='卡别').agg({'金额':sum})
print('\n')
print('没有NaN值后-----\n',gr2)
dataframe使用groupby后是带着分组信息的,并不是dataframe平铺的格式,所以直接导出会有问题。
把带有分组信息的group by结果的索引重建即可。
c_df = pd.DataFrame(df)
c_df.reset_index(inplace=True)
输出如下:
AttributeError: ‘Series’
Null值属于任何类型,它和空字符不一样,空字符它是属于varchar2的数据类型,但是null可以是任何数据类型,因此在处理空值的时候特别要小心。示例:在oracle中的模版示例中有emp表,我们知道有一列deptno列,但是其中没有任何一个员工,因此对它进行group by 的时候,如果不加group by 的时候, 它会返回一行数据,但是如果加了结果就不是预想的那样了。来做一个演示:
统计数据需要按省份分组,这是大家经常遇到的问题。今天遇到一奇葩问题,由于省份(province)字段数据不规范,
有的是省份名称,有的是 "" (空) 有的是 "未知"。这时 group by province 时就会出现未知的一组 空数据的一组 当然
前台是不能显示空省份的 如果把空省份都循环赋值为未知的话 前台显示未知省份 显得也不是那么和谐。
解决办法:
这是一个早在2013年就被发现的一个小问题:即pandas.pivot_table()的index里边含有空值的,空值的对应透视数据会被忽略。
使用pd.fillna()
import pandas
import numpy
a = [['a', 'b', 12, 12, 12], ['a', numpy.nan, 12.3, 233., 12], ['b', 'a', 123.23, 123,...
1. Group By 语句简介:Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。P.S. 这里真是体会到了一个好的命名的力量,Group By从字面是直接去理解是非常好理解的。恩,以后在命名的环节一定要加把劲:)。话题扯远了。2. Group B
MySQL 提供了 IS NULL 关键字,用来判断字段的值是否为空值(NULL)。空值不同于 0,也不同于空字符串。如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。其中,“NOT”是可选参数,表示字段值不是空值时满足条件。
给定按“UUT”分组的panda timeseries数据帧dfOut[64]:UUT SumDate_Time2017-04-28 18:48:16 uut-01 22017-04-28 18:48:18 uut-02 22017-04-28 18:48:19 uut-03 2我想使用reindex在1秒的时间间隔内创建一个时间序列,并用0值填充空白,仅用于列和,如下所...
In [2]: df = pd.DataFrame({'A': ['a', 'b', 'a', 'c', 'a', 'c', 'b', 'c'],
...: 'B': [2, 8, 1, 4, 3, 2, 5, 9],
...: 'C': [102, 98, 107, 10...