当前位置:   article > 正文

Pandas 第一章 环境配置与数据操作快速入门_pandas环境变量

pandas环境变量

1.安装anaconda

Index of /anaconda/archive/ | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror

2.数据集

我们后面会经常用的数据集team.xlsx,可以从网址https://www.gairuo.com/file/data/dataset/team.xlsx下载

3.读取数据

  1. import pandas as pd
  2. df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
  3. df.head() # 查看前5条,括号里可以写明你想看的条数
  4. df.tail() # 查看尾部5条
  5. df.sample(5) # 随机查看5条

4.验证数据

  1. df.shape # (100, 6) 查看行数和列数
  2. df.info() # 查看索引、数据类型和内存信息
  3. df.describe() # 查看数值型列的汇总统计
  4. df.dtypes # 查看各字段类型
  5. df.axes # 显示数据行和列名
  6. df.columns # 列名

5.建立索引

以上数据真正业务意义上的索引是name列,所以我们需要使它成为索引:
 

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

其中可选参数inplace=True会将指定好索引的数据再赋值给df使索引生效,否则索引不会生效。注意,这里并没有修改原Excel,从我们读取数据后就已经和它没有关系了,我们处理的是内存中的df变量。

6.数据选取

  1. # 查看指定列
  2. df['Q1']
  3. df.Q1 #同上,如果列名符合Python变量名要求,可使用

这里返回的是一个Series类型数据,可以理解为数列,它也是带索引的。

  1. # 选择多列
  2. df[['team', 'Q1']] # 只看这两列,注意括号
  3. df.loc[:, ['team', 'Q1']] # 和上一行效果一样

df.loc[x, y]是一个非常强大的数据选择函数,其中x代表行,y代表列,行和列都支持条件表达式,也支持类似列表那样的切片(如果要用自然索引,需要用df.iloc[])

(2)选择行

  1. # 用指定索引选取
  2. df[df.index == 'Liver'] # 指定姓名# 用自然索引选择,类似列表的切片
  3. df[0:3] #取前三行,同df.head(3)
  4. df[0:10:2] # 在前10个中每两个取一个
  5. df.iloc[:10,:] # 前10个

(3)指定行和列

  1. df.loc['Ben', 'Q1':'Q4'] # 只看Ben的四个季度成绩
  2. df.loc['Eorge':'Alexander', 'team':'Q4'] # 指定行区间

(4)条件选择

  1. # 单一条件
  2. df[df.Q1 > 90] # Q1列大于90的
  3. df[df.team == 'C'] # team列为'C'的
  4. df[df.index == 'Oscar'] # 指定索引即原数据中的name#
  5. 组合条件
  6. df[(df['Q1'] > 90) & (df['team']== 'C')] # and关系
  7. df[df['team'] == 'C'].loc[df.Q1>90] # 多重筛选

7.排序

  1. df.sort_values(by='Q1') # 按Q1列数据升序排列
  2. df.sort_values(by='Q1', ascending=False) # 降序
  3. df.sort_values(['team', 'Q1'], ascending=[True, False]) # team升序,Q1降

8.分组聚合

  1. df.groupby('team').sum() # 按团队分组对应列相加
  2. df.groupby('team').mean() # 按团队分组对应列求平均
  3. # 不同列不同的计算方法
  4. df.groupby('team').agg({'Q1': 'sum', #总和
  5. 'Q2': 'count', # 总数
  6. 'Q3':'mean', # 平均
  7. 'Q4': 'max'}) #最大值
  8. # 'count'和'mean'需要加引号,非自带函数

9.数据转换

对数据表进行转置

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

10.增加列

  1. df['one'] = 1 # 增加一个固定值的列
  2. df['total'] = df.Q1 + df.Q2 + df.Q3 + df.Q4 # 增加总成绩列# 将计算得来的结果赋值给新列df['total'] = df.loc[:,'Q1':'Q4'].apply(lambda x:sum(x), axis=1)
  3. df['total'] = df.sum(axis=1) # 可以把所有为数字的列相加
  4. df['avg'] = df.total/4 # 增加平均成绩列

11.统计分析

  1. df.mean() # 返回所有列的均值
  2. df.mean(1) # 返回所有行的均值,下同
  3. df.corr() # 返回列与列之间的相关系数
  4. df.count() # 返回每一列中的非空值的个数
  5. df.max() # 返回每一列的最大值
  6. df.min() # 返回每一列的最小值
  7. df.median() # 返回每一列的中位数
  8. df.std() # 返回每一列的标准差
  9. df.var() # 方差
  10. s.mode() # 众数

12.画图

pip install pandas matplotlib-i https://pypi.tuna.tsinghua.edu.cn/simple
import matplotlib.pyplot as plt
df['Q1'].plot() # Q1成绩的折线分布
df.loc['Ben','Q1':'Q4'].plot() # ben四个季度的成绩变化
  1. df.loc[ 'Ben','Q1':'Q4'].plot.bar() # 柱状图
  2. df.loc[ 'Ben','Q1':'Q4'].plot.barh() # 横向柱状图
  1. # 各Team四个季度总成绩趋势
  2. df.groupby('team').sum().T.plot()

用pie绘制饼图

  1. # 各组人数对比
  2. df.groupby('team').count().Q1.plot.pie()

13.导出

  1. df.to_excel('team-done.xlsx') # 导出 Excel文件
  2. df.to_csv('team-done.csv') # 导出 CSV文件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/93898
推荐阅读
相关标签
  

闽ICP备14008679号