Python pandas入门系列之众数和分位数

目录
  • 准备
  • 1.求众数
    • 1.1对全表进行操作
      • 1.1.1求取每列的众数
      • 1.1.2 求取每行的众数
    • 1.2 对单独的一行或者一列进行操作
      • 1.2.1 求取单独某一列的众数
      • 1.2.2 求取单独某一行的众数
    • 1.3 对多行或者多列进行操作
      • 1.3.1 求取多列的众数
      • 1.3.2 求取多行的众数
  • 2 求分位数
    • 2.1 求取不同分位的分位数
      • 2.1.1 四分之一分位数
      • 2.1.2 四分之三分位数
    • 2.2对全表进行操作
      • 2.2.1对每一列求分位数
      • 2.2.2 对每一行求分位数
    • 2.3 对单独的一行或者一列进行操作
      • 2.3.1 对某一列求分位数
      • 2.3.2 对某一行求分位数
    • 2.4 对多行或者多列进行操作
      • 2.4.1 对多列求分位数
      • 2.4.2 对多行求分位数
  • 附:pandas 和 numpy计算分位数的区别
  • 总结

准备

本文用到的表格内容如下:

先来看一下原始情形:

import pandas as pd
​
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df)

result:

数学成绩  语文成绩  英语成绩
0    89    78    98
1    35    34    34
2    43    56    25
3    35    78    83
4    67    46    65
5    89    89    83
6    96    45    83
7    35    67    45
8    35    78    83

1.求众数

1.1对全表进行操作

1.1.1求取每列的众数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.var())

result:

数学成绩  语文成绩  英语成绩
0    35    78    83

1.1.2 求取每行的众数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.mode(axis=1))

result:

0     1     2
0  78.0  89.0  98.0
1  34.0   NaN   NaN
2  25.0  43.0  56.0
3  35.0  78.0  83.0
4  46.0  65.0  67.0
5  89.0   NaN   NaN
6  45.0  83.0  96.0
7  35.0  45.0  67.0
8  35.0  78.0  83.0

1.2 对单独的一行或者一列进行操作

1.2.1 求取单独某一列的众数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.mode(axis=1))

result:

0    35
dtype: int64

1.2.2 求取单独某一行的众数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.iloc[[0]].mode())

result:

数学成绩  语文成绩  英语成绩
0    89    78    98

1.3 对多行或者多列进行操作

1.3.1 求取多列的众数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df[['数学成绩', "语文成绩"]].mode())

result:

数学成绩  语文成绩
0    35    78

1.3.2 求取多行的众数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.iloc[[0, 1]].mode())

result:

数学成绩  语文成绩  英语成绩
0    35    34    34
1    89    78    98

2 求分位数

分位数是比中位数更加详细的基于位置的指标,分位数主要有四分之一分位数,二分之一分位数(就是中位数)、四分之三分位数

2.1 求取不同分位的分位数

2.1.1 四分之一分位数

import pandas as pd
​
df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.quantile(0.25))

result:

数学成绩    35.0
语文成绩    46.0
英语成绩    45.0
Name: 0.25, dtype: float64

2.1.2 四分之三分位数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.quantile(0.75))

result:

数学成绩    89.0
语文成绩    78.0
英语成绩    83.0
Name: 0.75, dtype: float64

2.2对全表进行操作

2.2.1对每一列求分位数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.quantile(0.25))

result:

数学成绩    35.0
语文成绩    46.0
英语成绩    45.0
Name: 0.25, dtype: float64

2.2.2 对每一行求分位数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.quantile(0.25, axis=1))

result:

0    83.5
1    34.0
2    34.0
3    56.5
4    55.5
5    86.0
6    64.0
7    40.0
8    56.5
Name: 0.25, dtype: float64

2.3 对单独的一行或者一列进行操作

2.3.1 对某一列求分位数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df['数学成绩'].quantile(0.25))

result:

35.0

2.3.2 对某一行求分位数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.iloc[[0]].quantile(0.25))

result:

数学成绩    89.0
语文成绩    78.0
英语成绩    98.0
Name: 0.25, dtype: float64

2.4 对多行或者多列进行操作

2.4.1 对多列求分位数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df[['数学成绩', "语文成绩"]].quantile(0.25))

result:

数学成绩    35.0
语文成绩    46.0
Name: 0.25, dtype: float64

2.4.2 对多行求分位数

df = pd.read_excel(r'C:\Users\admin\Desktop\测试.xlsx')
print(df.iloc[[0, 1]].quantile(0.25))

result:

数学成绩    48.5
语文成绩    45.0
英语成绩    50.0
Name: 0.25, dtype: float64

附:pandas 和 numpy计算分位数的区别

pandas 和 numpy中都有计算分位数的方法,pandas中是quantile,numpy中是percentile

两个方法其实没什么区别,用法上稍微不同,quantile的优点是与pandas中的groupby结合使用,可以分组之后取每个组的某分位数

quantile代码:

import pandas as pd
import numpy as np
data = pd.read_csv('order_rank_p_0409.txt',sep='\t')
#将data按id_1 和 id_2 分组
grouped=data.groupby(['id_1','id_2'])
#用quantile计算第40%的分位数
grouped['gmv'].quantile(0.4)
#用to_csv生成文件
x.to_csv('order_ran_re.txt',sep= '\t')

percentile代码:

import pandas as pd
import numpy as np
data = pd.read_csv('order_rank_p_0409.txt',sep='\t')
a = array(data['gmv'])
np.percentile(a,0.4)

两段代码,两种方法计算的结果是一样的

总结

到此这篇关于Python pandas系列之众数和分位数的文章就介绍到这了,更多相关pandas众数和分位数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python Pandas实现数据分组求平均值并填充nan的示例

    Python实现按某一列关键字分组,并计算各列的平均值,并用该值填充该分类该列的nan值. DataFrame数据格式 fillna方式实现 groupby方式实现 DataFrame数据格式 以下是数据存储形式: fillna方式实现 1.按照industryName1列,筛选出业绩 2.筛选出相同行业的Series 3.计算平均值mean,采用fillna函数填充 4.append到新DataFrame中 5.循环遍历行业名称,完成2,3,4步骤 factordatafillna = pd.

  • Python Pandas分组聚合的实现方法

    Pycharm 鼠标移动到函数上,CTRL+Q可以快速查看文档,CTR+P可以看基本的参数. apply(),applymap()和map() apply()和applymap()是DataFrame的函数,map()是Series的函数. apply()的操作对象是DataFrame的一行或者一列数据,applymap()是DataFrame的每一个元素.map()也是Series中的每一个元素. apply()对dataframe的内容进行批量处理, 这样要比循环来得快.如df.apply(

  • Python pandas求方差和标准差的方法实例

    目录 准备 1.求方差 1.1对全表进行操作 1.1.1求取每列的方差 1.1.2 求取每行的方差 1.2 对单独的一行或者一列进行操作 1.2.1 求取单独某一列的方差 1.2.2 求取单独某一行的方差 1.3 对多行或者多列进行操作 1.3.1 求取多列的方差 1.3.2 求取多行的方差 2 求标准差 2.1对全表进行操作 2.1.1对每一列求标准差 2.1.2 对每一行求标准差 2.2 对单独的一行或者一列进行操作 2.2.1 对某一列求标准差 2.2.2 对某一行求标准差 2.3 对多行

  • 详解python pandas 分组统计的方法

    首先,看看本文所面向的应用场景:我们有一个数据集df,现在想统计数据中某一列每个元素的出现次数.这个在我们前面文章<如何画直方图>中已经介绍了方法,利用value_counts()就可以实现(具体回看文章) 但是,现在,我们考虑另外一个场景,我们假如要想统计其中两列元素出现次数呢?举个栗子: 在df数据集中,如果我们想统计A.B两列的元素的出现情况,也就是说,得到如下表. 从上面的最后一列可以看到,在A.B两列中,1 2 出现了2次,1 4 出现1次 ,1 6出现1次,2 3出现了2次, 2

  • 使用Python pandas读取CSV文件应该注意什么?

    示例文件 将以下内容保存为文件 people.csv. id,姓名,性别,出生日期,出生地,职业,爱好 1,张小三,m,1992-10-03,北京,工程师,足球 2,李云义,m,1995-02-12,上海,程序员,读书 下棋 3,周娟,女,1998-03-25,合肥,护士,音乐,跑步 4,赵盈盈,Female,2001-6-32,,学生,画画 5,郑强强,男,1991-03-05,南京(nanjing),律师,历史-政治 如果一切正常的话,在Jupyter Notebook 中应该显示以下内容:

  • 利用python Pandas实现批量拆分Excel与合并Excel

    一.实例演示 1.将一个大Excel等份拆成多个Excel 2.将多个小Excel合并成一个大Excel并标记来源 work_dir="./course_datas/c15_excel_split_merge" splits_dir=f"{work_dir}/splits" import os if not os.path.exists(splits_dir): os.mkdir(splits_dir) 二.读取源Excel到Pandas import pandas

  • python中pandas对多列进行分组统计的实现

    使用groupby([ ]).size()统计的结果,值相同的字段值会不显示 如上图所示,第一个空着的行是982499 7 3388 1,因为此行与前面一行的这两个字段值是一样的,所以不显示.第二个空着的行是390192 22 4278 1,因为此行与前面一行的第一个字段值是一样的,所以不显示.这样的展示方式更直观,但对于刚用的人,可能会让其以为是缺失值. 如果还不明白可以看下面的全部数据及操作. import pandas as pd res6 = pd.read_csv('test.csv'

  • python geopandas读取、创建shapefile文件的方法

    shapefile是GIS中非常重要的一种数据类型,在ArcGIS中被称为要素类(Feature Class),主要包括点(point).线(polyline)和多边形(polygon).作为一种十分常见的矢量文件格式,geopandas对shapefile提供了很好的读取和写出支持,其DataFrame结构相当于GIS数据中的一张属性表,使得可以直接操作矢量数据属性表,使得在python中操作地理数据更方便.本文给大家介绍下用Python脚本中对Shapefile文件(.shp,.shx,.d

  • Python学习笔记之pandas索引列、过滤、分组、求和功能示例

    本文实例讲述了Python学习笔记之pandas索引列.过滤.分组.求和功能.分享给大家供大家参考,具体如下: 解析html内容,保存为csv文件 //www.jb51.net/article/162401.htm 前面我们已经把519961(基金编码)这种基金的历史净值明细表html内容抓取到了本地,现在我们还是需要 解析html,取出相关的值,然后保存为csv文件以便pandas来统计分析. from bs4 import BeautifulSoup import os import csv

  • python pandas分组聚合详细

    目录 python pandas分组聚合 1.环境 2.分组 3.序列分组 4.多列分组 5.索引分组 7.聚合 8.单函数对多列 9.多函数对多列 python pandas分组聚合 1.环境 python3.9 win10 64bit pandas==1.2.1 groupby方法是pandas中的分组方法,对数据框采用groupby方法后,返回的是DataFrameGroupBy对象,一般分组操作后会进行聚合操作. 2.分组 import pandas as pd import numpy

  • Python Pandas的简单使用教程

    一. Pandas简介 1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.pandas提供了大量能使我们快速便捷地处理数据的函数和方法.你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一. 2.Pandas 是python的一个数据分析包,最初由AQR Capital Management

随机推荐