DataFrame数据分析
注:文中用到的数据文件可以在资源中免费获取。
文章目录
- 基本统计
- 分组分析
- 分布分析
- 交叉分析
- 结构分析
- 相关分析
基本统计
- 常用统计函数表
函数 | 说明 |
---|---|
count() | 非空元素计算 |
min() | 最小值 |
max() | 最大值 |
idxmin() | 最小值的位置 |
idxmax() | 最大值的位置 |
quantile(0.1) | 10%分位数 |
sum() | 求和 |
mean() | 均值 |
median() | 中位数 |
mode() | 众数 |
var() | 方差 |
std() | 标准差 |
mad() | 平均绝对偏差 |
describe() | 一次性输出多个描述性统计指标 |
>>>import pandas as pd
>>>df=pd.read_excel(r"d:\sjcltest.xlsx","Sheet3")
>>>df学号 班级 姓名 性别 英语
0 2308024241 23080242 小龙 男 76
1 2308024244 23080242 小怡 女 66
2 2308024201 23080242 小培 男 60
3 2308024347 23080242 小华 女 67
- describe()的使用较为方便,可以一次性查看多项统计信息,实际应用中会经常通过该函数来检查数据。
>>>import pandas as pd
>>>df=pd.read_excel(r"d:\sjcltest.xlsx","Sheet3")
>>>df.英语.describe() #df['英语'].describe()
count 4.000000
mean 67.250000
std 6.601767
min 60.000000
25% 64.500000
50% 66.500000
75% 69.250000
max 76.000000
Name: 英语, dtype: float64
结果值 | 意义 |
---|---|
count | 一列的元素个数 |
mean | 一列数据的平均值 |
std | 一列数据的均方差;(方差的算术平方根,反应一个数据集的离散程度:越大,数据间得到差异越小,数据集中的数据离散程度越低) |
min | 一列数据中的最小值 |
max | 一列数据中的最大值 |
20% | 一列数据中前25%的数据的平均值 |
50% | 一列数据中前50%的数据的平均值 |
75% | 一列数据中,前75%的数据的平均值 |
>>>import pandas as pd
>>>df=pd.read_excel(r"d:\sjcltest.xlsx","Sheet1")
>>>df[['math','physical']].describe()math physical
count 4.000000 5.000000
mean 81.000000 72.600000
std 5.830952 18.447222
min 76.000000 52.000000
25% 76.000000 56.000000
50% 80.500000 75.000000
75% 85.500000 85.000000
max 87.000000 95.000000
>>>df[['math','physical']].mean()
math 81.0
physical 72.6
dtype: float64
分组分析
- 分组分析是根据分组字段将分析对象划分成不同的部分,以进行对比分析各组之间的差异性的一种分析方法。常用的统计指标:size 计数、sum 求和、mean 均值、median() 中位数、min() 最小值、max() 最大值
groupby(by=[分组列1,分组列2,...])[统计列1,统计列2,...].统计函数()
#参数说明:
#by:用于分组的列
#中括号:用于统计的列
#统计函数用于统计数据
先建立分组,再用统计函数
>>>import pandas as pd
>>>import numpy as np
>>>df=pd.read_excel(r"d:\sjcltest.xlsx","Sheet3")
>>>fzl=df.groupby(by=['班级'])
>>>fzl[['英语']].mean()英语
班级
23080242 67.25
#分组统计函数一起用也可以
>>>df.groupby(by=['班级'])[['英语']].mean()英语
班级
23080242 67.25
>>>tjl=fzl['英语'].agg([('总分','sum'),('人数','size'),('平均值','mean'),('最高分','max'),('最低分','min')])
>>>tjl总分 人数 平均值 最高分 最低分
班级
23080242 269 4 67.25 76 60
>>>tj2=fzl['英语'].agg(['sum','size','mean','max','min'])
>>>tj2sum size mean max min
班级
23080242 269 4 67.25 76 60
>>>df.groupby(by=['班级','性别'])['英语'].agg([('总分','sum'),('人数','size'),('平均值','mean'),('最高分','max'),('最低分','min')])总分 人数 平均值 最高分 最低分
班级 性别
23080242 女 133 2 66.5 67 66男 136 2 68.0 76 60
分布分析
- 分布分析是指根据分析的目的,将数据(定量数据)进行等距或不等距的分组,进而研究各组分布规律的一种分析方法。
简单来说:就是新增一列,将原来的数据按照其性质归入新的类别中。
cut(series,bins,right=True,labels=NULL)
#series 需要分组的数据
#bins 分组的依据数据
#right 分组的时候右边是否闭合
#labels 分组的自定义标签,可以不自定义
>>>import pandas as pd
>>>df=pd.read_excel(r"d:\sjcltest.xlsx","Sheet3")
>>>bins=[0,60,70,80,90,101]
>>>labels=["不及格","及格","中等","良好","优秀"]
>>>df['英语分级']=pd.cut(df.英语,bins,right=False,labels=labels)
>>>print(df[['姓名','英语','英语分级']])姓名 英语 英语分级
0 小龙 76 中等
1 小怡 66 及格
2 小培 60 及格
3 小华 67 及格
交叉分析
- 通常用于分析两个或两个以上分组变量之间的关系,以交叉表形式进行变量间关系的对比分析。
>>>import pandas as pd
>>>import numpy as np
>>>pivot_table(values,index,columns,aggfunc,fill_value)
#values 数据透视表中的值
#index 数据透视表中的行
#columns 数据透视表中的列
#aggfunc 统计函数,默认为mean
#fill_value NA的值统一替换
#返回值:数据透视表的结果
>>>df_pt=pd.pivot_table(df,index="英语分级",columns="班级",aggfunc=[np.size])
>>>df_ptsize 姓名 学号 性别 英语
班级 23080242 23080242 23080242 23080242
英语分级
及格 3.0 3 3.0 3
中等 1.0 1 1.0 1
>>>df_pt.columns
MultiIndex([('size', '姓名', 23080242),('size', '学号', 23080242),('size', '性别', 23080242),('size', '英语', 23080242)],names=[None, None, '班级'])
>>>df_pt.columns[0]
('size', '姓名', 23080242)
>>>df_pt.columns[2]
('size', '性别', 23080242)
>>>df_pt.columns[2][1]
'性别'
>>>df1=pd.pivot_table(df[['班级','英语','英语分级']],index="班级",columns="英语分级",aggfunc=[np.size],fill_value=0)
>>>df1size 英语
英语分级 及格 中等
班级
23080242 3 1
#也可以将统计为0的赋值为零,默认为nan
结构分析
- 结构分析是在分组的基础上,计算各组成部分所占的比重,进而分析总体的内部特征的一种分析方法。
>>>df1.div(df1.sum(axis=1),axis=0) #按列占比size 英语
英语分级 及格 中等
班级
23080242 0.75 0.25
>>>df1.div(df1.sum(axis=0),axis=1) #按行占比size 英语
英语分级 及格 中等
班级
23080242 1.0 1.0
相关分析
- 相关分析是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象探讨其相关方向以及相关程度,是研究随机变量之间的相关关系的一种统计方法。
- 相关系数:可以用来描述定量变量之间的关系。
相关系数r绝对值的取值范围 | 相关程度 |
---|---|
0<=r<0.3 | 低相关度 |
0.3<=r<0.8 | 中度相关度 |
0.8<=r<=1 | 高度相关度 |
#两列之间的相关度计算
>>>df['英语'].corr(df['学号'])
0.21041816377780612
#多列之间的相关度计算
>>>df[['英语','学号','班级']].corr()英语 学号 班级
英语 1.000000 0.210418 NaN
学号 0.210418 1.000000 NaN
班级 NaN NaN NaN
知识点整理不易,如果对你有帮助,给个免费的赞支持一下吧!
DataFrame数据分析相关推荐
- 熊猫Pivot_table()– DataFrame数据分析
什么是数据透视表? (What is a Pivot Table?) A pivot table is a table of statistics that summarizes the data o ...
- dataframe数据分析常用操作汇总
dataframe的常用操作汇总 目录 1.建 1 2.读 2 3.存 2 4.阅 2 5.取 2 6.改 4 7.增 4 8.删 5 9.并 5 10.序 7 1.建 创建只有一列的数据框 df = ...
- Pandas大数据清洗实战之一:安装与初识
一.基础 1.简介 pandas是Python中的一个数据分析和清洗的库,基于numpy构建的,在其中包含了大量的标准数据模型,提供了高效操作大型数据集所需要的工具.最早呢是被作为金融数据分析工具开发 ...
- 15个借助AI,ChatGPT自动写代码工具
整理了15个借助AI和ChatGPT辅助我们自动写代码的工具,整理到 15个借助AI,ChatGPT自动写代码工具http://www.webhub123.com/#/home/detail?proj ...
- Python读取多个excel文件(删除字段、数据格式转换、dataframe多表合并)并写入ElasticSearch实战(自动创建索引、写入ElasticSearch、探索性数据分析)
Python读取多个excel文件(删除字段.数据格式转换.dataframe多表合并)并写入ElasticSearch实战(自动创建索引.写入ElasticSearch.探索性数据分析) 目录
- pandas dataframe column_Python数据分析——Pandas 教程(下)
Python数据分析--Pandas 教程(上) 上节,我们讲了 Pandas 基本的数据加载与检索,这节我们讲讲如何进行数据比较. Pandas系列对象 在 Pandas 中我们获取指定列的数据有多 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一、pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主
利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍 一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目 ...
- python dataframe删除某一列_怎样用Python进行数据分析
本文总结了猴子Live课程:怎样用Python进行数据分析,主讲内容包括Numpy和Pandas. 一.一维数据分析 一维数据分析,可以使用Numpy中Array,也可以使用Pandas中的Serie ...
- python中的array函数作用_数据分析的python基底(3)——array、Series、DataFrame笔记...
<利用python进行数据分析>的第4.5章介绍了两个非常重要的包,NumPy和Pandas,这篇文章是我看这两章做的笔记,只列了要点和我觉得要留意的地方. 电子书和配套代码,还有一些学习 ...
最新文章
- 人脸识别 python调用face++ 功能测试
- FD.io/VPP — L2TP
- 天然富硒科技成果转化-李喜贵:成立联合体谋定农业大健康
- python怎么安装scrapy_python2.7安装Scrapy
- 支持向量机的近邻理解:图像二分类为例(3)
- 基础——ASP.NET页面的生命周期
- [Leetcode][第40题][JAVA][数组总和2][回溯][剪枝]
- 揭秘一线互联网企业 前端JavaScript高级面试
- 重装vcenter后恢复原来制作的模板!
- 一个空间绑定多个域名实现自动跳转的几种方法!
- python的基础集合(八)
- 字节跳动面试真题:java实现远程控制
- Linux 命令(125)—— vmstat 命令
- 沫沫金::jqGrid插件-弹窗返回值
- matlab m语言建模,MATLAB M语言高级编程
- linux setlocale函数,linux setlocale用法
- PPT用宏插入不同背景图片
- 如何才能高效学习,99%的人不知道的高效学习法(非常棒棒文章)
- Windows蓝牙设备自动断开问题
- CRM如何进行客户关系管理