栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pandas库常用命令汇总——自用备查

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pandas库常用命令汇总——自用备查

import pandas as pd

读取excel文件:

data = pd.read_excel("C:deldesktop111.xlsx",sheet_name="Sheet1")

读取csv文件:

data = pd.read_csv("Data_Path")

注意,由于python语言会将“”当作转义字符,因此在填写文件地址时,一定要将“”字符转换成“/”,特别是当出现下面这个报错的时候,那就是地址写错了!!!

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated UXXXXXXXX escape

分组:groupby——参考:https://zhuanlan.zhihu.com/p/101284491

单一分组变量:例如根据公司进行分组

data.groupby("company")

多个分组变量:例如根据行业、年份进行分组

data.groupby(["industry","Year"])

得到的是DataFrameGroupBy object,为了方便查看,可以将其转换成list(data)

groupby分组之后,就能够对数据进行聚合操作了

agg:

data.groupby("company").agg('mean')

///可用的聚合函数有:maxminsummeanmedianstd(标准差)var(方差)count

如果针对不同的列进行不同方式的聚合,比如要计算不同公司员工的平均年龄以及薪水的中位数,可以利用字典进行聚合操作的指定:

data.groupby('company').agg({'salary':'median','age':'mean'})

transform:

其与agg的区别是什么?

如果现在需要在原数据集中新增一列avg_salary,代表员工所在的公司的平均薪水(相同公司的员工具有一样的平均薪水),该怎么实现呢?

如果用agg,按照正常的步骤来计算,需要先求得不同公司的平均薪水,然后按照员工和公司的对应关系填充到对应的位置,实现代码如下:

avg_salary_dict = data.groupby('company')['salary'].mean().to_dict()
​
data['avg_salary'] = data['company'].map(avg_salary_dict)

使用transform的话,仅需要一行代码:

data['avg_salary'] = data.groupby('company')['salary'].transform('mean')
​

apply:

它相比前两种而言更加灵活,能够传入任意自定义的函数,实现复杂的数据操作。

假如要获取各个公司年龄最大员工的数据:

def get_oldest_staff(x):
    ...:     df = x.sort_values(by = 'age',ascending=True)
    ...:     return df.iloc[-1,:]
    ...:
​
oldest_staff = data.groupby('company',as_index=False).apply(get_oldest_staff)

填充缺失值:

很多时候我们需要将缺失值替换成有效的数值。
虽然可以通过 isnull() 方法建立掩码来填充缺失值,但是 Pandas 为此专门提供了一个fillna() 方法,它将返回填充了缺失值后的数组副本。

用一个单独的值来填充缺失值:

data.fillna(0)

用缺失值前面的有效值从前往后填充(forward-fill):

data.fillna(method='ffill')

series的话可以上述那样直接填充,如果是DataFrame还需要在填充时需要设置坐标轴参数 axis:

df.fillna(method='ffillna',axis=1)

需要注意,在从前往后填充时,如果需要填充的缺失值前面没有值,那么它就仍然是缺失值。

分组填充缺失值:举例填充平均值

data["DA_num"] = data.groupby(["industry","Year"])["DA_num"].transform(lambda x: x.fillna(x.mean()))

将处理后的文件导出为excel/csv:
 

data.to_excel("data_path")
data.to_csv("data_path")

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977025.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号