【笔记】【深入浅出pandas】第一章

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:

【笔记】【深入浅出pandas】第一章
  • 自动增加了索引(第一列)
  • 从0开始 自动隐藏了中间
  • 只显示了前后5条 底部有行列数(row column)

其他常用方式:

【笔记】【深入浅出pandas】第一章
【笔记】【深入浅出pandas】第一章
  • 读取函数一般会赋值给一个变量 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:

【笔记】【深入浅出pandas】第一章

(七)数据选取

一、选择列
1、查看单列

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

OUT:

【笔记】【深入浅出pandas】第一章
返回的是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

对聚合后的数据转置:

【笔记】【深入浅出pandas】第一章
df.groupby('team').sum().stack()

out:

【笔记】【深入浅出pandas】第一章
df.groupby('team').sum().unstack()

out:

【笔记】【深入浅出pandas】第一章

(十一)增加列

#增加一个固定值的列
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

(十五)小结

【笔记】【深入浅出pandas】第一章

Original: https://blog.csdn.net/qq_47809408/article/details/124515231
Author: ‘VeNus
Title: 【笔记】【深入浅出pandas】第一章

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/675719/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球