数据处理之pandas库

什么是pandas

Pandas是一个强大的分析结构化数据的工具集,基于NumPy构建,提供了高级数据结构和数据操作工具,它是使Python成为强大而高效的数据分析环境的重要因素之一。

pandas索引操作

1.Series和DataFrame中的索引都是index对象

[1].创建Series对象
pd1 = pd.Series(range(5),index=['a','b','c','d','e'])
pd1
[2] 创建DataFrame对象
pd2 = pd.DataFrame(np.random.randint(1,10,size=(3,4)),index=list('abc'),columns=['1','2','3','4'])
pd2

索引对象一旦建立就不可变,保证数据的安全性。

在这里插入图片描述

Series索引

1.index指定行索引名
pd1 = pd.Series(range(5),index=['a','b','c','d','e'])
2. 行索引
行索引可根据改行对应index索引寻找对应的value,也可以根据改行所在位置寻找指定value
pd1['a']  // 根据index索引寻找value
pd1[0]  // 根据行数寻找value
3. 连续切片索引
pd1[1:3]  // 根据行区间寻找指定连续数据
pd1['a':'c']  // 根据index寻找指定连续数据
4.不连续索引
pd1[[1,3]]  // 根据指定行数锁定指定数据
pd1[['a','b']]   // 根据指定index锁定指定数据
5.布尔索引
布尔索引即是返回条件为真值的数据
pd1[pd1 > 2]  // 返回value大于2的所有数据

DataFrame索引

1.columns指定列索引名
pd2 = pd.DataFrame(np.random.randint(1,10,size=(3,4)),index=list('abc'),columns=['1','2','3','4'])
2.列索引
pd2['1']  // 返回列索引为1的所有 值,为Series对象
pd2[['1']]  // 返回列索引为1的所有值,但是为DataFrame对象
3.不连续索引
pd2[['1','3']]  // 返回列索引为1和3的数据,为DataFrame对象
4.loc标签索引
pd2.loc['a']  // 返回index为a的行数据,为Series对象
pd2.loc['a','1']  // 返回index为a,column为1对应的数据
pd2.loc[['a','b','c'],'1']  // 返回index为a,b,c,column为1的数据
pd2.loc['a':'c','1']  // 效果同上
pd2.loc[['a','b'],['1','3']]  // 返回index为a,b,column为1 和i3的数据
pd2.loc['a':'c','1':'3'] // 返回index为a~c,column为1~3的所有数据,为DataFrame对象
5.iloc位置索引
pd2.iloc[1,2] // 返回第二行第三列的数据
pd2.iloc[1:3,1:3]  // 返回第二行到第三行,第二列到第三列的数据
pd2.iloc[[0,2],[0,2]]  // 返回第一行和第第三行,第一列和第三列的数据

Pandas的对齐运算

Series对齐运算

Series按行,索引对齐运算

// 按索引对齐进行运算,如果没对齐的位置则补NaN,最后填充NaN
s1 = pd.Series(range(10, 20), index = range(10))
s2 = pd.Series(range(20, 25), index = range(5))
s1 + s2

DataFrame对齐运算

df1 = pd.DataFrame(np.ones((2,2)), columns = ['a', 'b'])
df2 = pd.DataFrame(np.ones((3,3)), columns = ['a', 'b', 'c'])
df1 + df2

填充数据

1.fill_value:使用add,sub,div,mul函数式,可对NAN值进行fill填充

s1.add(s2, fill_value = -1)  // s1和s2对齐运算,将NAN值填充为-1
df1.sub(df2, fill_value = 2.)  // df1减df2,NAN值使用2.0替换,此种填充会将数据类型变为float类型
算术方法表

在这里插入图片描述

Pandas函数应用

排序

1.索引排序

Series排序操作
s4 = pd.Series(range(10, 15), index = np.random.randint(5, size=5))
s4.sort_index(ascending=True)   // 按照索引进行升序,ascending默认为True,升序;当为False时,降序排列
DataFrame排序操作,注意轴方向
df4 = pd.DataFrame(np.random.randint(3, 5,size=(3,5)), 
               index=np.random.randint(3, size=3),
               columns=np.random.randint(5, size=5))
df4.sort_index(ascending=True,axis=1)  # 当axis等于1时,操作纵轴  , 当axis=0时,操作横轴

2. 按值排序

df4.sort_values(by=4, ascending=True)  # 暗中列名为4,升序排列

处理缺失数据

1.判断是否存在缺失值,isnull()

df4.isnull()

2.删除缺失数据,dropna()

df4.dropna(axis=1)  // 根据轴方向,删除NAN的行或列

3.填充缺失数据

df4.fillna(-100.)

层级索引

创建层级索引Series对象

ser_obj = pd.Series(np.random.randn(12),index=[
            ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'],
            [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]
        ])

选取子集

1.外层选取

ser_obj['c']  // 选取外层索引为c的数据

2. 内层选取

ser_obj[:, 2] // 选取内层索引为2的数据

交换分层

1.交换分层顺序swaplevel()

ser_obj.swaplevel()

2.交换并排序分层sortlevel()

ser_obj.swaplevel().sortlevel()

Pandas统计计算

1. sum()

pd2 = pd.DataFrame(np.random.randint(1,10,size=(3,4)),index=list('abc'),columns=['1','2','3','4'])
pd2.sum(axis=1)

mean()

pd2.mean(axis=1)

max(),min()

pd2.max(axis=1)
pd2.min(axis=1)

describe()汇总统计描述

pd2.describe()
在这里插入图片描述

	参数解读
	count:求和
	mean:平均值
	std:方差
	min:最小值
	25%:第一四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
	50%:第二四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。
	75%:第三四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

Pandas数据清洗

1.处理缺失数据

pd.fillna() :填充缺失值
pd.dropna():删除缺失值
pd.isnull():判断是否为空
pd.notnull():判断是否不为空

2.数据转换

pd.duplicated():判断每行重复
pd.drop_duplicates():过滤重复行,默认判断全部列,也可指定某些列
pd.replace():根据内容进行替换

3.字符串操作

s.count()
s.endswith()
s.index()
s.find()
s.replace()
s.rfind()
s.strip()
s.split()
s.lower()
s.upper()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值