Python数据分析处理库-Pandas

一、Pandas概述与Pandas基本操作

1.1 Pandas概述

Pandas 数据分析与处理库

import pandas as pd
df = pd.read_csv('filename')
df.head(6)  #显示前6行数据
df.info()  #显示相关信息,列信息、行数、类型、内存
df.index  #显示索引信息
df.columns()
df.values()

1.2 Pandas基本操作

data={"country":["China","US","UK"],
"population":[100,3,1]}
df_data = pd.DataFrame(data)
df['country']    #取某一列数据

series: dataframe 中的一行/列

df.set_index('column name')
df['index的值']   #就可以取得对应的行

age = df['Age']
age * 5
age.min()
age.max()
age.mean()
df.describe()  #整个dataframe中的数值列各种统计信息 8个

二、Pandas索引与groupby操作

2.1 Pandas索引

df['age'][:5] 年龄列前5行数据
df[['age','fare']][:5] age和fare列的前5行数据
.loc 用label定位
.iloc 用位置定位
df.iloc[0:5] 第0-5个数据
df.iloc[0:5, 1:3] 第0-5个数据 的第1,2列
df.set_index('Name') 使用Name做索引
df.loc['my name'] my name对应的列数据
df.loc['my name', 'fare']
df.loc['my name': 'youre name'] 两个名字之间的数据

bool类型的索引

df[df['fare'] > 40] 显示fare>40的行数据
df.loc[df['sex'] == 'male','age'].mean() 男的平均年龄

2.2 groupby操作

df.groupby('key).sum()
df.groupby('key).aggregate(np.mean()
df.groupby('Sex‘)['age'].mean()

三、数值运算与对象操作

3.1 数值运算

df.sum() 按行求和
df.sum(axis =1 ) 按行求和
df.min()
df.max()
df.mean()
df.median() 中位数

二元统计

df.cov() 协方差
df.corr() 相关系数
df['age'].value_counts() 每个值的个数 默认降序排列
df['age'].value_counts(ascending = True) 升值排序
df['age'].value_counts(ascending = True, bins = 5) 把年龄值分组
df['age'].count() 记数

帮助

print(help(pd.value_counts))

3.2 对象操作

Series对象的增删改查

import pandas as pd
data = [1, 2, 3]
index = ['a','b','c']
s = pd.Series(data = data, index = index)
#### 查
s[0] #第0行数据
s[0:3] #第0,1行数据
mask = [True, False, True]
s[mask]
s.loc['a']
s.iloc[1]
### 改
s1 = s.copy()
s1['a']=100
s1.replace(to_replace = 100, value =101, inplace=False)  #inplace=False原位置不修改
s1.index()
s1.index = ['a','b','d']  #修改索引
s1,rename(index = {'a','A'},inplace=True)  #把索引a 改为A
### 增加
s3 = s1.append(s2)
s3['j'] = 200
s3 = s1.append(s2, ignor_index= True)  忽略索引,false保留索引
### 删除
del s1.['A'] #删除A列
s1.drop(['b','d'],inreplace=True)  #删除b d行

DateFrame对象的增删改查

data=[[1,2,3], [4,5,6]]
index = ['r1','r2']
columns=['c1','c2','c3']
df = pd.DataFrame(data=data, index = index, coloumns=cloumns)
df['c1']
df.loc['r1']
df.iloc[0]
df.loc['r1']['c1']=100
df.index = ['k1','k2'] # 改索引
## 增加数据
df['r3'] = [1,2,3]
df3 = pd.concat([df, df2] ,axis=0)  #连接操作  这是默认的
df3['c4'] = [6,7]  #增加c4列
pd.concat([df1,df2],axis =1 )  列连接,注意df1,df2的index值要一致
### 删除操作
df.drop(['r1'], axis = 0, inplace = True) 删除r1行
del df1['c1'] #删除k1列
df1.drop(['c2','c3'],axis=1,inplace= True)  #删c2,c3列


四、merge操作、显示设置与数据透视表

4.1 merge操作

pd.merge(left,right,on=‘key’) 把left 和 right以key为连接合并,如果有相同的列名,刚列名_x 列名_y
pd.merge(left,right,on=[‘key1’,'key2']) 交集
pd.merge(left,right,on=[‘key1’,'key2'],how='outer') 并集
pd.merge(left,right,on=[‘key1’,'key2'],how='outer', indicator=True) 生成出来的数据多出一列_merge, 值为both left_only right_only
pd.merge(left,right,on=[‘key1’,'key2'],how='left') 以左表为基准
pd.merge(left,right,on=[‘key1’,'key2'],how='right') 以右表为基准

4.2 显示设置

pd.get_option('display.max_rows')  # 获得显示最大行数
pd.set_option('display.max_rows',100)  # 设置显示最大行数
pd.get_option('display.max_colums')  # 获得显示最大列数
pd.get_option('display.max_colwidth')  # 获得显示字符串最大长度
pd.get_option('display.precision')  # 获得显示字符串最大长度

#  都有对应的set_option函数

4.3 数据透视表

image.png
example_pivot = example.pivot(index='Category', columns='Month', values='Amount')
example_pivot.sum(axis = 1)  #求和,按行求和,Category
example_pivot.sum(axis = 0)  #求和,按列求和,Month
#titanic.csv数据
df = pd.read_csv('./data/titanic.csv')
df.piovt_table (index='Sex', columns='Pclass', values='Fare')  #默认是求平均值
df.piovt_table (index='Sex', columns='Pclass', values='Fare',aggfunc='max')  #求最大值
df.piovt_table (index='Sex', columns='Pclass', values='Fare',aggfunc='count')  #计数
df.crosstable(index=df['Sex'], columns=df['Pclass'])  #结果与上面一样
df.piovt_table (index='Pclass', columns='Sex', values='Survived',aggfunc='mean') #统计不同性别在不同等级船舱的获救比例。
#统计未成年的获救比例
df['Underaged'] = df['Age']  < 18
 df.piovt_table (index='Underaged', columns='Sex', values='Survived',aggfunc='mean') 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容