【深入浅出pandas——第一章】

【深入浅出pandas——第一章】,第1张

1.3 快速入门 (一)安装导入

终端安装,执行命令:

pip install pandas matplotlib

安装后,启动Jupyter Notebook,导入pandas

#导入,起别名pd
import pandas as pd
(二)准备数据集

数据集(dataset),相当于excel表格
参考数据集可从https://www.gairuo.com/file/data/dataset/team.xlsx下载

(三)读取数据

读取数据到pandas里,变量名为df(DataFrame缩写,pandas二维数据基础结构)

df=pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
#查看数据
df

output:

  • 自动增加了索引(第一列)
  • 从0开始 自动隐藏了中间
  • 只显示了前后5条 底部有行列数(row column)

其他常用方式:

  • 读取函数一般会赋值给一个变量 df, df = pd.read_()
  • 输出函数是将变量自身进行 *** 作并输出df.to_()
(四)查看数据
#括号内可以写想看的条数
df.head()#前5条
df.tail()#尾部5条
df.sample(5)#随机查看5条
(五)验证数据
#行列数
df.shape

#索引、数据类型、内存信息
df.info()

#数值类型汇总统计
df.describe()

#各字段类型
df.dtypes

#行列名
df.axes

#列名
df.columns
(六)建立索引

把 name 列变成索引

df.set_index("name",inplace=True) #建立索引并生效

inplace=True使设置的索引生效
没有修改原来的excel,处理的是df变量
OUT:

(七)数据选取

一、选择列
1、查看单列

#查看指定列Q1
df['Q1']
#如果符合变量名要求,可以使用
df.Q1

OUT:

返回的是Series类型的数据(即带索引的数列)

2、查看多列

#注意括号
df[['team','Q1']]
#使用df.loc[x,y]
df.loc[:,['team','Q1']]

df.loc[x,y]是数据选择函数,x是列,y是行,都可以采用条件表达式,可用切片
用自然索引需要用df.iloc[]

二、选择行

1、用制定索引选取

df[df.index=='Liver']

2、用自然索引,类似切片

#前三个
df[0:3]

#前十个每两个选一个
df[0:10:2]

#前十个
df.iloc[:10,:]

三、选择行列

同时指定行列范围

df.loc['Ben','Q1':'Q4']

df.loc['Eorge':'Alexander','team':'Q4']

四、条件选择

1、单一条件

df[df.Q1 > 90] 
df[df.team == 'C'] 
df[df.index == 'Oscar'] 

2、组合条件

#and &
df[(df['Q1'] > 90) & (df['team'] == 'C')] 

#多重筛选
df[df['team'] == 'C'].loc[df.Q1>90] 
(八)排序
#升序
df.sort_values(by='Q1') 

#降序
df.sort_values(by='Q1', ascending=False) 

#team升序,Q1降序
df.sort_values(['team', 'Q1'], ascending=[True, False])
(九)分组聚合

类似SQL的groupby的数据透视功能:

1、分组后对应列相加

df.groupby('team').sum() # 按团队分组对应列相加

2、分组后求平均

df.groupby('team').mean() # 按团队分组对应列求平均

3、不同列不同计算

df.groupby('team').agg({'Q1': sum,  
                        'Q2': 'count', 
                        'Q3':'mean', 
                        'Q4': max})
(十)数据转换

进行转置,按照轴对称翻转

df.groupby('team').sum().T

对聚合后的数据转置:

df.groupby('team').sum().stack()

out:

df.groupby('team').sum().unstack()

out:

(十一)增加列
#增加一个固定值的列
df['one'] = 1 

#增加总成绩列,指定一些列相加增加一个新列
df['total'] = df.Q1 + df.Q2 + df.Q3 + df.Q4 

#把计算的结果复制给新的列
df['total'] = df.loc[:,'Q1':'Q4'].apply(lambda x:sum(x), axis=1)
# 可以把所有为数字的列相加
df['total'] = df.sum(axis=1) 
# 增加平均成绩列
df['avg'] = df.total/4 
(十二)统计分析
df.mean() # 返回所有列的均值
df.mean(1) # 返回所有行的均值,下同
df.corr() # 返回列与列之间的相关系数
df.count() # 返回每一列中的非空值的个数
df.max() # 返回每一列的最大值
df.min() # 返回每一列的最小值
df.median() # 返回每一列的中位数
df.std() # 返回每一列的标准差
df.var() # 方差
s.mode() # 众数
(十三)绘图

使用matplotlib画图

df['Q1'].plot() # Q1 成绩的折线分布
df.loc['Ben','Q1':'Q4'].plot() # ben 四个季度的成绩变化
df.loc[ 'Ben','Q1':'Q4'].plot.bar() # 柱状图
df.loc[ 'Ben','Q1':'Q4'].plot.barh() # 横向柱状图
df.groupby('team').sum().T.plot() # 各 Team 四个季度总成绩趋势
df.groupby('team').count().Q1.plot.pie() # 各组人数对比
(十四)导出

导出文件在notebook文件的同一目录下

df.to_excel('team-done.xlsx') # 导出 excel
df.to_csv('team-done.csv') # 导出 csv
(十五)小结

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/796771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存