您当前的位置: 首页 >  pandas

快乐很重要的汪

暂无认证

  • 5浏览

    0关注

    36博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

pandas(4)统计计算--超级详细

快乐很重要的汪 发布时间:2022-09-14 22:25:58 ,浏览量:5

pandas(4)统计计算

本节目标:掌握pandas作为统计工具的操作

本节内容:掌握截取和筛选,以及更进一步的统计函数,方法等 本节技术点:pandas,groupby,统计操作

本节阅读需要(20)min。 本节实操需要(20)min。

五星级推荐pandas可视化教学网站。 pandas tutor 建议使用jupter进行操作。

文章目录
  • pandas(4)统计计算
  • 前言
  • 一、基础的统计操作
    • 排序
    • mean均值
    • 其他
  • 二、筛选filter
  • 三、分组groupby
    • 串联groupby
    • 分组统计
    • 聚类agg
  • 总结

前言

pandas和numpy一样不只是提供了基础的数据结构。 pandas的数据结构见前两节。 其中讲列操作的时候提到了初步的统计操作。

我们会结合动态呈现的网站理解统计的逻辑。

一、基础的统计操作 排序
import pandas as pd
import io

csv = '''
breed,type,longevity,size
Labrador,sporting,12.04,medium
German,herding,9.73,large
Beagle,hound,12.3,small
Golden,sporting,12.04,medium
Yorkshire,toy,12.6,small
Bulldog,non-sporting,6.29,medium
Boxer,working,8.81,medium
Poodle,non-sporting,11.95,medium
'''

dogs = pd.read_csv(io.StringIO(csv)) # io.StringIO可变字符串
dogs = dogs[['breed', 'size']] # 列筛选器,产生新的df
dogs.sort_values('size', ascending=False)

这样就实现的从小到大的排序。字符串根据ascll码进行逐位排序。

但是有的时候我们如何根据字符串的长度进行排序呢? 这个业务我们也经常遇到!!!

my_index = df["Codon"].str.len().sort_values().index #索引对象
df1 = df.reindex(my_index)

我们需要先得到一个临时的统计长度的列然后排序,再得到排序的index 通过reindex重新构建一个新的排序好的df。 注意原来的df还是没有排序的。

多列排序

df_data_order1 = df.sort_values(by=['C','B'],ascending=[False,True])

一般我们总是生成某个或几个统计标准的列,然后根据这些列进行排序。

mean均值
dogs['longevity'].mean() # series
dogs[['longevity']].mean() #dataframe
dogs[['longevity']].mean(1) #按行

dogs[[‘longevity’]].mean(1)语法虽然无问题,但是均值一般是按列,对于特定的属性而言的.行均值很少见,在这里就是dogs[[‘longevity’]]没有变化。

如何按行统计均值呢? 就是dogs.mean(1)多选几个数据行才比较有意义。只选择一列统计行方向的均值是一样的。

其他

都是成员方法

print(df.count(),'→ count按列统计非Na值的数量\n')
print(df.min(),'→ min统计最小值\n',df['key2'].max(),'→ max统计最大值\n')
print(df.quantile(q=0.75),'→ quantile统计分位数,参数q确定位置\n')
print(df.sum(),'→ sum求和\n')
print(df.mean(),'→ mean求平均值\n')
print(df.median(),'→ median求算数中位数,50%分位数\n')
print(df.std(),'\n',df.var(),'→ std,var分别求标准差,方差\n')
print(df.skew(),'→ skew样本的偏度\n')
print(df.kurt(),'→ kurt样本的峰度\n')
二、筛选filter

前面讲过了用列名作为筛选器,最常用的也是列名. 但是有的时候我们可能更深入的和df中的具体的值相关. 比如说我们一个班需要得到前十名的成绩等等这样的任务.

import pandas as pd

mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
          {'a': 10, 'b': 20, 'c': 30, 'd': 40},
          {'a': 100, 'b': 200, 'c': 300, 'd': 400},
          {'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000},
          {'a': 10000, 'b': 20000, 'c': 30000, 'd': 40000},
          ]
df = pd.DataFrame(mydict, index=['one', 'two', 'three', 'four', 'five'])

df.loc[:, df.loc['two']  12), 'breed']

在这里插入图片描述

注意行和列的筛选器也是不一样的。 行:形如(df[‘a’]

关注
打赏
1663165558
查看更多评论
立即登录/注册

微信扫码登录

0.0421s