06 pandas DataFrame - 数据过滤、NaN处理、统计方法

=== 数据过滤获取 ===

个人觉得并没有什么用,完全可以用切片或索引器代替

stu_info = pd.read_excel('student_info1.xlsx',sheetname='countif',index_col='学号').head(3)
stu_info[stu_info.columns[0:]]
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

=== 缺失值处理 ===

原数据:

stu_info = pd.read_csv('student_info1.csv',header=1)
stu_info
#stu_info[stu_info.isnull()] 像Series这一处理是不行的
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

1、删除nan

# 删除nan行
stu_info.dropna()
# 删除nan列
stu_info.dropna(axis=1)

# 设置阈值
# 如果一行都是nan才删除
stu_info.dropna(how='all')

2、设置NaN的值

# 将nan设置为0
stu_info.fillna(0)
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

使用nan下一行的值进行填充 (axis=1列填充)

stu_info.fillna(method='bfill')

使用nan上一行的值进行填充 (axis=1列填充)

stu_info.fillna(method='ffill')
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

按列填充

stu_info.fillna({'Math':100,'English':0})
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

值替换 将语文成绩中88分换成99分

stu_info.replace({88:99})
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

=== 统计方法 ===

1、 计数方法count只记非nan值 (axis=1 按列)

stu_info.count()
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

2、总统计值

stu_info.describe()
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

3、最值、累加

stu_info.max()
stu_info.min()
stu_info.sum()

4、中位数 quantile median

stu_info.quantile()
stu_info.median()

5、 最大值的索引值

stu_info.idxmax()
#stu_info.argmax()#在0.21版本中删除了
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

6、 偏科程度(判断一组数据的最大值和最小值差别是不是很大)

stu_info.mad(axis=1)
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

7、 样本值累计和
本行值加上一行的值,88+33=121

stu_info.cumsum()
06 pandas DataFrame - 数据过滤、NaN处理、统计方法

8、变化率

stu_info.pct_change()

第一行NaN,因为上一行没有数据,无法计算变化率
正的是增长的百分率,负的是减少的半分率


06 pandas DataFrame - 数据过滤、NaN处理、统计方法

=== 常用统计方法 ===

06 pandas DataFrame - 数据过滤、NaN处理、统计方法
06 pandas DataFrame - 数据过滤、NaN处理、统计方法
上一篇:netfilter源码学习(4)——NAT处理(1)


下一篇:处理:Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY error: Failed dependencies: