Pandas的学习之——使用Pandas进行描述性统计
- 首先引入需要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as pyplot
- 读取数据
ratings_url = 'https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ST0151EN-SkillsNetwork/labs/teachingratings.csv'
ratings_df=pd.read_csv(ratings_url)
- 查看数据表的前五行数据
ratings_df.head()
输出:
1 查看某个列的数据的统计特征值(eg:平均值、中位数、最小值、最大值)
下面分别查看‘students’列的统计特征值。
- 查看该列的平均值
ratings_df['students'].mean()
输出:
36.62419006479482
- 查看该列的中位数
ratings_df['students'].median()
输出:
23.0
- 查看该列的最小值
ratings_df['students'].min()
输出:
5
- 查看该列的最大值
ratings_df['students'].max()
输出:
380
2 绘制某列数据的分布直方图
使用matplotlib库,绘制‘beauty’列的直方图。
import matplotlib.pyplot as pyplot
pyplot.hist(ratings_df['beauty'])
输出:
3 将数据按列值分类进行统计分析
- 首先使用groupby()方法将数据按照某一列的值进行分类(就和sql语言中的group by子句的功能一样)
- 分组之后,可以对每一组中的数据进行agg聚合操作
- 最后可以运用reset_index()方法将原来标签变为新的一列数据
3.1 Pandas.groupby()方法
groupby()方法的参数是要进行分组的依据,即指定某一个列名,根据该列的不同取值进行分类
例如,下面左边的数据按照‘company’进行分类的过程如下:(groupby(‘company’))
(图片来源:博客:[https://zhuanlan.zhihu.com/p/101284491?utm_source=wechat_session])
3.2 agg聚合操作
聚合操作是groupby之后非常常见的操作。也和sql语言的聚合操作类似。
下面的表格介绍了常见的聚合操作函数:
(图片来源:博客:[https://zhuanlan.zhihu.com/p/101284491?utm_source=wechat_session])
聚合函数的参数是字典形式的变量。key值为想要进行统计分析的列名,对应的values值为所要进行的聚合操作。
例如:
(数据来源:博客:[https://zhuanlan.zhihu.com/p/101284491?utm_source=wechat_session])
3.3 reset_index() 改变索引
下面的代码显示了reset_index()方法的用途:
- 没有使用reset_index()方法:
下面的代码将数据根据性别gender分类:male & female。然后对分类后不同类的数据的‘beauty’值进行求平均值、标准差、方差的计算。
ratings_df.groupby('gender').agg({'beauty':['mean', 'std', 'var']})
输出:
- 使用reset_index()方法的输出:
ratings_df.groupby('gender').agg({'beauty':['mean', 'std', 'var']}).reset_index()
输出:
可见,该方法把分类的素引变成了新的一列。索引变成了默认的,从0开始的顺序数列。
3.4 综合案例
针对上面的ratings_df数据框架进行的一系列操作:
(1)男、女教员的平均颜值评分有差异吗?给出男女教员的颜值评分平均值和标准差。
ratings_df.groupby('gender').agg({'beauty':['mean', 'std', 'var']}).reset_index()
输出:
(2)计算男性和女性终身教授的比例。观察终身职位的地位因性别而异吗?
tenure_count = ratings_df.groupby('gender').agg({'tenure': 'count'}).reset_index()
tenure_count
输出:
只看数量貌似结果不太权威,需要查看男性、女性终身教员在特定群体中的占比
tenure_count['percentage'] = 100 * tenure_count.tenure/tenure_count.tenure.sum()
tenure_count
输出:
可见,男性教员中,终身教员的占比更高一些。
(3)计算终身教授是少数族裔的比例。如果教师是一个明显的少数群体,你会说终身教职的地位是不同的吗?
minority_prof = ratings_df.groupby('minority').agg({'tenure': 'count'}).reset_index()
minority_prof['mino/prof'] = minority_prof.tenure / minority_prof.tenure.sum()
minority_prof
输出:
从上面的比例数据可见,确实少数族裔中终身教授的比例更低一些。
(4)平均年龄是否因任期而异?给出终身教授和非终身教授的年龄的平均值和标准差。
age_tenure = ratings_df.groupby('tenure').agg({'age': ['mean', 'std']}).reset_index()
age_tenure
输出:
从结果可见,虽然终身教授(tenure = yes)的平均年龄更低一些,但是终身教授年龄的分布更加离散。
(5)终身教授的评分中位数是多少
ratings_df[ratings_df['tenure'] == 'yes']['eval'].median()
输出:
4.0
Pandas的学习之——使用Pandas进行描述性统计相关推荐
- 应用统计学与R语言实现学习笔记(三)——描述性统计
Chapter 3 Descriptive Statistics 本篇是第三章,内容是描述性统计.同时在这一章会开始渗透R语言的相关内容.但整体还是以理论为主. Chapter 3 Descripti ...
- 统计学习二:数据的描述性统计
参加此统计学习小组主要是巩固 python 语言,故所有笔记都以 python 代码实现. 完整代码见 github : StatisticLearning 如何描述数据的分布?可以从以下三个方面来描 ...
- Pandas组队学习Task05
Pandas组队学习Task05 import pandas as pd import numpy as np path = r"C:\Users\yongx\Desktop\data&qu ...
- pandas基础(part3)--描述性统计
学习笔记,这个笔记以例子为主. 开发工具:Spyder 文章目录 numpy描述性统计 Pandas描述性统计 numpy描述性统计 数值型数据的描述性统计,主要包括了计算数值型数据的完整情况.最小值 ...
- Python模块之Pandas模块学习笔记
目录 一.模块的安装 二.数据结构 1. DataFrame的创建 2. DataFrame索引的修改 3. DataFrame数据信息查看 三.文件的读取和写入 1. 读取 2. 写入 四. 数据的 ...
- pandas使用groupby函数和describe函数计算不同分组的描述性统计(descriptive statistics of each group in dataframe)
pandas使用groupby函数和describe函数计算不同分组的描述性统计(descriptive statistics of each group in dataframe) 目录
- Python中的pandas模块学习
本文是基于Windows系统环境,学习和测试pandas模块: Windows 10 PyCharm 2018.3.5 for Windows (exe) python 3.6.8 Windows x ...
- pandas版本_Datawhale十二月Pandas组学习打卡Task00.准备工作
编号112打卡 Pandas大名如雷贯耳,做数据处理不可能不用Pandas.但以前没有系统学过,十分懵懂.这次跟着Datawhale的学习营学习,争取能深入全面的了解.我们这次组队的队名叫" ...
- Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同)
Python语言学习:利用pandas对两列字段元素求差集(对比两列字段所有元素的异同) 目录 利用pandas对两列字段元素求差集(对比两列字段所有元素的异同) 输出结果 实现代码 利用pandas ...
最新文章
- iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客
- Android开发之Service与Activity数据交互(源代码分享)
- java json转map
- 【Python】Django生成API 文档
- wgs84坐标格式转换度分秒_一起爬山吗?寻找GIS坐标系统中“隐秘的角落”
- java数据类型划分_一张图搞定java数据类型的划分
- 数组的一些与遍历相关的方法总结
- com.css.common.jdbcTemplate中的类
- cross-entropy函数
- LeetCode——Word Break
- Ov两款骁龙865手机即将发布:其中一款或低于2999元
- ANT出现“警告: 编码 GBK 的不可映射字符”解决方法
- bzoj 1015: [JSOI2008]星球大战starwar
- vue 中引入使用jquery
- java core 之 IO流
- Aircrack-ng破解WEP
- 计算机提示无法识别优盘,插入U盘显示无法识别怎么办
- [工业互联-2]:工业有线互联总线之CAN总线
- 梳理19年上半年图文记录笔记(ios篇)
- 5G网下通过网络编码增强转发策略的NDN物联网内容分发模型
热门文章
- jdk新特性::作用
- 人工智能机器人-智能时代的新纪元
- Spring实战第五版源码
- 库位管理html,仓库日常管理之库位管理篇
- C语言-找出0-100内的素数
- 关闭win10自动更新——组策略
- [FAQ21282]分区表中分区配置的大小与MTxxxx_Android_scatter.txt中不一致
- [转]CANON(佳能)PIXMAMP150清零
- steam网站显示invalid SSL certerficate
- 粒子群算法PSO优化最小二乘支持向量机做回归预测,多输入单输出模型。PSO-LSSVM