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') 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容