python实现描述统计

2024-06-01 21:44
文章标签 python 实现 描述统计

本文主要是介绍python实现描述统计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据基础情况

import numpy as np
import pandas as pd
import matplotlib.pyplot as pyplot
pd.options.display.max_rows = 10##最多输出10行数据
data_url= 'https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ST0151EN-SkillsNetwork/labs/teachingratings.csv'
data=pd.read_csv(data_url)
# 打印行数和列数
data.shape
#(463, 19)# 打印数据的个数
data.size
#8797# 该数据集的维度
data.ndim
#2# 该数据集的长度
len(data)
#463# 各个列的值的个数
data.count()
'''
minority           463
age                463
gender             463
credits            463
beauty             463... 
female             463
single_credit      463
upper_division     463
English_speaker    463
tenured_prof       463
Length: 19, dtype: int64
''''''count()函数是一种非常常用的方法,用于统计某个元素在列表、元组或字符串中出现的次数。它的使用非常简单,只需要传入要统计的元素作为参数即可;基本语法:count(element, start, end);其中,element是要统计的元素;start:(可选,整型)开始的索引,默认0;end :(可选,整型)结束的索引,默认最后一个位置count()函数返回的是指定元素在列表、元组或字符串中出现的次数。如果元素不存在,则返回0。1)字符串:string.count( str, start, end )2)字节串:bytes.count( str, start, end ) 3)字节数组:bytearray.count( str, start, end ) 4)列表:list.count( element )5)元组:tuple.count( element ) 6)等差数列:range.count( element )fruits = ['apple', 'banana', 'orange', 'apple', 'grape', 'apple']
count = fruits.count('apple')
print(count)
#>>3text = "Python is a powerful programming language. Python is widely used in web development, data analysis, and artificial intelligence."
count = text.count('Python')
print(count)
#>>2numbers = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
count = numbers.count([1, 2])
print(count)
#>>2'''# 各列的最小值
data.min()
'''
Rank                                                                  1
Title                                              (500) Days of Summer
Genre                                                            Action
Description           "21" is the fact-based story about six MIT stu......                        
Rating                                                              1.9
Votes                                                                61
Revenue (Millions)                                                    0
Metascore                                                            11
Length: 12, dtype: object
'''# 描述信息
df.describe()
'''float_col	int_col
count	5.000000	5.000000
mean	0.500000	3.000000
std		0.395285	1.581139
min		0.000000	1.000000
25%		0.250000	2.000000
50%		0.500000	3.000000
75%		0.750000	4.000000
max		1.000000	5.000000
'''
'''
查看某个列的数据的统计特征值(eg:平均值、中位数、最小值、最大值)
平均值:.mean();中位数.median();最小值:.min();最大值:.max()
'''#描述组内数据的基本统计量
data.groupby('gender').describe().stack()#unstack():从行到列取消堆叠,stack():从列到行堆叠

在这里插入图片描述

分布图

绘制某列数据的分布直方图

import matplotlib.pyplot as pyplot
pyplot.hist(data['beauty'])

在这里插入图片描述

分类统计分析

groupby()方法

通过对DataFrame对象调用groupby()函数返回的结果是一个DataFrameGroupBy对象,而不是一个DataFrame或者Series对象
分组时,可指定多个列名
调用get_group()函数可以返回一个按照分组得到的DataFrame对象
也可调用max()、count()、std()等,返回一个DataFrame对象
可与聚合函数aggregate/agg一起使用
可对组内的数据绘制概率密度分布

grouped = df.groupby('Gender')
print(type(grouped))
print(grouped)
'''
<class 'pandas.core.groupby.groupby.DataFrameGroupBy'>
'''##分组时,不仅仅可以指定一个列名,也可以指定多个列名:
grouped = df.groupby('Gender')
grouped_muti = df.groupby(['Gender', 'Age'])
print(grouped.size())
'''
Gender
Female    3
Male      5
dtype: int64
'''print(grouped_muti.size())
'''
Gender  Age
Female  17     118     122     1
Male    18     119     120     221     1
dtype: int64
'''##get_group()函数可以返回一个按照分组得到的DataFrame对象
df = grouped.get_group('Female').reset_index()
print(df)
'''index   Name  Gender  Age  Score
0      2   Cidy  Female   18     93
1      4  Ellen  Female   17     96
2      7   Hebe  Female   22     98
'''

调用max()、count()、std()等,返回的结果是一个DataFrame对象。

grouped.max()[['age', 'allstudents']]
'''age	allstudents
gender		
female	62		282
male	73		581
'''df.groupby('Sex')['salary'].mean()##求得分组平均数, 得到的是一个Series, 每一行对应了每一组的mean, 除此之外你还可以换成std, median, min, max, sum 这些基本的统计数据
'''
Sex
female    2500
male      6750
Name: salary, dtype: int64
'''
grouped.mean()[['age', 'allstudents']]
'''age	allstudents
gender		
female	45.092308	44.138462
male	50.746269	63.208955
'''grouped.count()

在这里插入图片描述

也可以选择使用聚合函数aggregate,传递numpy或者自定义的函数,前提是返回一个聚合值

def getSum(data):total = 0for d in data:total+=dreturn totalprint(grouped.aggregate({'age':np.median, 'allstudents':np.sum}))
'''age	allstudents
gender		
female	46	8607
male	51	16940
'''
print(grouped.aggregate({'age':getSum}))
'''age
gender	
female	8793
male	13600
'''
print(grouped.aggregate(np.median))

在这里插入图片描述

aggregate函数不同于apply,前者是对所有的数值进行一个聚合的操作,而后者则是对每个数值进行单独的一个操作

df.groupby('Sex').agg({'salary':np.sum,'age':np.median})
'''salary   age
Sex                 
female    5000  33.0
male     27000  35.0
'''df.groupby('Sex')['age'].agg([np.sum,np.mean,np.max,np.min])
'''sum   mean  amax  amin
Sex                             
female   66.0  33.00  36.0  30.0
male    135.0  33.75  40.0  25.0
'''
可视化操作
grouped['age'].plot(kind='line', legend=True)
plt.show()

在这里插入图片描述

df.groupby('Sex')['area'].value_counts().unstack().plot(kind = 'bar',figsize = (15,5))
df.groupby('area')['age'].sum().plot(kind = 'bar',figsize = (15,5))

这篇关于python实现描述统计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1022199

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

golang版本升级如何实现

《golang版本升级如何实现》:本文主要介绍golang版本升级如何实现问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录golanwww.chinasem.cng版本升级linux上golang版本升级删除golang旧版本安装golang最新版本总结gola

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四: