Pandas数据探索常用函数

这是一个学生各季度成绩总表(节选),各列说明如下。

  • name:学生的姓名,这列没有重复值,一个学生一行,即一条数据,共100条。

  • team:所在的团队、班级,这个数据会重复。

  • Q1~Q4:各个季度的成绩,可能会有重复值。

import pandas as pd
df = pd.read_excel('./team.xlsx')
df

df.head() # 查看前5条,括号里可以写明你想看的条数

 

df.tail() # 查看尾部5条

 

df.sample(5) # 随机查看5条

 

df.shape # 查看行数和列数

 

df.describe() # 查看数值型列的汇总统计

# 将描述性统计情况转置展示并添加缺失率栏位
df.describe().T.assign(missing_rate = df.apply(lambda x : (len(x)-x.count())/float(len(x))))

df.dtypes # 查看各字段数据类型

df.axes # 显示数据行和列名

df.columns # 列名

df.info()# 显示有数据类型、索引情况、行列数、各字段数据类型、内存占用等

 

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

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

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

# 用指定索引选取
df[df.index == 'Liver'] # 指定姓名

# 用自然索引选择,类似列表的切片
df[0:3] # 取前三行

df[0:10:2] # 在前10个中每两个取一个

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

df.loc['Ben', 'Q1':'Q4'] # 只看Ben的四个季度成绩

df.loc['Eorge':'Alexander', 'team':'Q4'] # 指定行区间

# 单一条件
df[df.Q1 > 90] # Q1列大于90的

df[df.team == 'C'] # team列为'C'的

df[df.index == 'Oscar'] # 指定索引即原数据中的name

# 组合条件
df[(df['Q1'] > 90) & (df['team'] == 'C')] # and关系
df[df['team'] == 'C'].loc[df.Q1>90] # 多重筛选

df.sort_values(by='Q1') # 按Q1列数据升序排列

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

df.sort_values(['team', 'Q1'], ascending=[True, False]) # team升序,Q1降序

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

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

# 不同列不同的计算方法
df.groupby('team').agg({'Q1': sum,  # 总和
                        'Q2': 'count', # 总数
                        'Q3':'mean', # 平均
                        'Q4': max}) # 最大值

df.groupby('team').sum().T  # 转置

df.groupby('team').sum().stack() # 多重索引

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

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

df.mean() # 返回所有列的均值

df.mean(1) # 返回所有行的均值,下同

df.corr() # 返回列与列之间的相关系数

df.count() # 返回每一列中的非空值的个数

df.max() # 返回每一列的最大值

df.min() # 返回每一列的最小值

df.median() # 返回每一列的中位数

df.std() # 返回每一列的标准差

df.var() # 方差

df.mode() # 众数

df['Q1'].plot.line() # Q1成绩的折线分布

df.loc['Ben','Q1':'Q4'].plot.line() # ben四个季度的成绩变化

df.loc[ 'Ben','Q1':'Q4'].plot.bar() # 柱状图

df.loc[ 'Ben','Q1':'Q4'].plot.barh() # 横向柱状图

# 各Team四个季度总成绩趋势
df.groupby('team').sum().T.loc['Q1':'Q4', :].plot.line()

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eureka丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值