一、Pandas简介
https://inter.joyfulpandas.datawhale.club/Content/ch2.html#
二、Pandas基本操作-Jupyter
Pandas-Basis-Operations in Jupyter Notebook
ipynb转化为md
1 2 3 4 5
| # 安装 nbconvert pip install nbconvert
# 转换 .ipynb 文件为 .md 文件 jupyter nbconvert --to markdown notebook.ipynb
|
数据导入
1 2
| df = pd.read_csv('./dataset/output.csv') df
|
数据查看
1. 查看数据前五行, 后五行
1 2
| print(df.head()) print(df.tail())
|
2. 查看数据信息(如数据类型、非空值数量等):
3. 查看数据描述性统计信息(如均值、标准差等):
4. 查看数据列名
5. 查看数据索引
6. 按列名选择数据
数据修改
列操作
7. 按列名修改数据:
1 2
| df['index'] = [str(x) for x in range(len(df))] print(df)
|
8. 按列条件筛选数据行
1 2 3
| filtered_df = df[df['ef100'] > 0] filtered_df
|
9. 按列条件修改数据
1 2
| df.loc[df['ef100'] > 0, 'ef100'] = 0 print(df)
|
10. 按条件删除数据
1 2
| df = df[df['ef100'] != 0] print(df)
|
11. 添加新列
1 2
| df['index^2'] = [x*x*x for x in range(len(df))] print(df)
|
12. 删除列
1 2
| df = df.drop(['index^2', 'index', 'ef111'], axis=1) print(df)
|
13. 重命名列
1 2 3
| df = df.rename(columns={'mass': 'atomic mass'}) print(df)
|
14. 设置索引
1 2
| df = df.set_index('Key') print(df)
|
15. 重置索引
1 2
| df = df.reset_index() print(df)
|
行操作
16. 数据行排序
1 2
| sorted_df = df.sort_values(by='radius') print(sorted_df)
|
17. 数据行分组
1 2 3 4
| df.loc[['A' in strkey for strkey in df['Key']], 'Key'] = 'A+' grouped_df = df.groupby('Key')
print(grouped_df.get_group('A+'))
|
1 2 3 4
| for name, group in grouped_df: print(f"Group: {name}") print(group) print("\n")
|
18. 合并数据行
1 2 3 4
| data2 = {'Key': ['A', 'B', 'C', 'D'], 'ef100': [9, 9, 9, 9], 'ef_sub_100': [4, 4, 4, 4]} df2 = pd.DataFrame(data2) merged_df = pd.concat([df, df2]) print(merged_df)
|
19. 插入数据行
1 2 3
| df.loc[1.5] = ['B', 25, 1, 1, 1, 1, 1] print(df)
|
1 2 3
| df.loc[2.5] = {'Key': 'C', 'ef100': 1, 'ef_sub_100': 1} print(df.tail())
|
20. 删除数据行
1 2
| df = df.drop([1, 2]) print(df)
|
21. 填补列缺失值
1 2
| df['melting'] = df['melting'].fillna(0) print(df)
|
22. 去除重复值
1 2
| df.loc[3.5] = {'Key': 'C', 'ef100': 1, 'ef_sub_100': 1, 'melting': 0} print(df.tail())
|
1 2
| df = df.drop_duplicates() print(df.tail())
|
23. 数据透视表
NBA数据样例
https://www.cnblogs.com/Yanjy-OnlyOne/p/11195621.html
1 2
| pivot_table = pd.pivot_table(df, values=['ef100','ef_sub_100'], index=[u'Key',u'melting']) print(pivot_table)
|
24. 数据转置
1 2 3
| transposed_df = df.T print(transposed_df)
|
25. 数据合并(按行)
1 2
| df3 = pd.DataFrame({'Key': ['D'], 'melting': [300], 'ef100': [0]}) print(df3)
|
1 2
| connected_df = pd.concat([df, df3]) print(connected_df)
|
26. 数据行切片
1 2
| sliced_df = df[3:4] print(sliced_df)
|
27. 数据行迭代
1 2
| for index, row in df.iterrows(): print(row)
|
28. 数据过滤
1 2
| filtered_df = df[(df['melting'] > 1000) & (df['ef_sub_100'] < 0)] print(filtered_df)
|
29. 数据替换
1 2
| df['Key'] = df['Key'].replace('A+', 'A') print(df)
|
30. 数据映射
1 2 3
| mapping = {'A': 'A++', 'B': 'B++'} df['Key'] = df['Key'].map(mapping).fillna(df['Key']) print(df)
|
参考资料
- 加速Pandas,https://mp.weixin.qq.com/s/3eKWO4iT08mrNWfG3BGwSQ
- https://mp.weixin.qq.com/s/FPkPUqxLXqBi8b_p30wlWg