1 | import numpy as np |
pandas是基于Numpy的工具, 为解决数据分析任务而诞生.
I 数据定义
1.1 Series
类似一维数组对象, 由一组数据(value)及一组与之相关的索引(index)组成, 默认index从0开始. Numpy的数组通过隐式定义的整数索引获得数值, 而Pandas的Series对象用一种显示定义的索引于数值关联(形态更倾向于字典)
数据定义:
1 | a1 = pd.Series([1,2,np.nan,5]) |
1.2 DataFrame
DataFrame是一个表格型数据类型, 既有行索引也有列索引, 可认为是一组Series的纵向排列
数据定义:
1 | Dates = pd.date_range('2023-06-29', periods=4) |
以上index和column可省略, 此时索引从0顺序排列
根据列构造:
1 | df2=pd.DataFrame({ |
II 数据检索
数据检索可通过行列的索引或位置
索引检索
2.1 列检索 by index
使用一个下标索引某一列, 该风格更倾向数据库和数组/列表索引相悖
1 | DF['c2'] # 取出某一列 |
2.2 行检索 by index
1 | data.loc['2023-06-29'] |
2.3 行列检索 by index
1 | DF['c3']['2023-06-29'] |
2.4 位置检索
使用iloc
通过位置检索数据
1 | DF.iloc[2,2] |
2.5 条件检索
此条待查证
1 | DF[DF.A>8] |
III 数据修改
3.1 赋值
通过II中提供的方法检索得到的数据可直接赋值, 无论是一个数据还是一组数据
对单个数据赋值:
1 | DF.iloc[2,2]=111 |
根据条件赋值:
1 | DF.B[df.A>4] = 0 |
3.2 重排序
1 | # ascending adj.上升的 |
3.3 添加项目
添加列(Series), 长度需对齐.
1 | DF['F'] = np.nan |
添加行
1 | DF.iloc[1] = np.nan |
丢失数据处理
丢失数据修改
1 | df.dropna() # 删除所有由nan的行列 |
丢失数据检查
1 | df.isnull() # 检查数据是否为null(是否为0), 返回一个相同大小由布尔类型组成的矩阵 |
IV 数据合并
4.1 直接合并
1 | pd.concat([DF1, DF2, DF3],axis=0) |
4.2 join合并
参照SQL语言
1 | pd.concat([DF1, DF2], axis=0, join='outer',srot=False) |
4.3 根据两组key合并
1 | #定义资料集 |
how=
‘inner’: 仅保留索引完全相同的列
‘outer’: 保留所有列
‘left’: 保留左侧索引
‘right’: 保留右侧索引
4.4 根据index合并
pd.merge(left, right,left_index=True,how=’outer’)
pd.merge(left, right,left_index=True,right_index=True,how=’inner’)
4.5 overlapping问题
为重复列添加后缀
suffixes=[‘_boy’,’_girl’]
V 数据读写
5.1 数据导入
读入的数据为一个DataFrame
1 | pd.read_csv('InData.csv') # 读取以逗号分隔的数据 |
可选参数:
header=None:第一行是否作为列名
sep=’\t’:分隔符
5.2 数据导出
1 | data.to_csv('MyCsv',index = False) |
VI 数据统计
count()数量
first()、last() 第一项与最后一项
mean()、median() 均值与中位数
min()、max() 最小值与最大值
std()、var() 标准差与方差
mad() 均值绝对偏差(mean absolute deviation)
prod() 所有项乘积
sum() 所有项求和
VII 绘图
import natplotlib.pyplot as plt
data.plot()
plt.show()
参考文献
(https://blog.csdn.net/weixin_55270959/article/details/125582472)
(https://blog.csdn.net/m0_52990609/article/details/124856533)