数据处理之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

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

数据处理之pandas库_第1张图片

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库_第2张图片

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()
数据处理之pandas库_第3张图片

	参数解读
	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()

你可能感兴趣的:(python,数据分析,数据挖掘,pandas)