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))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据整理操作及众所周知【数据分析】

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

计算机组成原理·存储系统疑点归纳

组原这门课有点学得不是很懂&#xff0c;现在快考试了&#xff0c;挑几个做错了的题分析、记录一下。 N o . 1 \mathit{No}.1 No.1  x x x、 y y y 为定点整数&#xff0c;其格式为 1 1 1 位符号位、 n n n 位数值位&#xff0c;若采用补码一位乘法实现乘法运算&#xff0c;则…

[AI OpenAI] 推出ChatGPT Edu

一种负担得起的解决方案&#xff0c;帮助大学将AI负责任地引入校园。 我们宣布推出ChatGPT Edu&#xff0c;这是一个专为大学设计的ChatGPT版本&#xff0c;旨在负责任地向学生、教职员工、研究人员和校园运营部署AI。ChatGPT Edu由GPT-4o提供支持&#xff0c;能够跨文本和视觉…

【5】MySQL数据库备份-XtraBackup - 全量备份

MySQL数据库备份-XtraBackup-全量备份 前言环境版本 安装部署下载RPM 包二进制包 安装卸载 场景分析全量备份 | 恢复备份恢复综合 增量备份 | 恢复部分备份 | 恢复 前言 关于数据库备份的一些常见术语、工具等&#xff0c;可见《MySQL数据库-备份》章节&#xff0c;当前不再重…

SpringBoot 单元测试 指定 环境

如上图所示&#xff0c;在配置窗口中添加--spring.profiles.activedev&#xff0c;就可以了。

面试题:SpringBoot启动流程

具体步骤 新建一个Spring应用程序 (new springApplication())&#xff1a; 确认web应用的类型加载ApplicationContextInitializer加载ApplicationListener记录主启动类 运行应用程序&#xff08;.run&#xff09;&#xff1a; 准备环境对象Environment&#xff0c;用于加载…

自监督表示学习和神经音频合成实现语音修复

关键词&#xff1a;语音修复、自监督模型、语音合成、语音增强、神经声码器 语音和/或音频修复的目标是增强局部受损的语音和/或音频信号。早期的工作基于信号处理技术&#xff0c;例如线性预测编码、正弦波建模或图模型。最近&#xff0c;语音/音频修复开始使用深度神经网络&a…

react antd table表格如何获取当前行id

组件库上都有详细的介绍&#xff0c;有自带的一些属性&#xff01;

【EFK日志系统】docker一键部署filebeat、metricbeat

docker一键部署filebeat、metricbeat filebeat部署创建配置文件一键启动修改配置文件查验信息 metricbeat部署创建配置文件一键启动修改配置文件查验信息 上两篇文章写了搭建部署es集群和部署kibana 这篇写一键部署filebeat和metricbeat收集工具 规划服务器是 es01:172.23.16…

PyQt5创建与MySQL数据库集成的应用程序

最近&#xff0c;对之前的mysql管理系统进行了更新升级&#xff0c;制作了一版关于车牌的管理系统&#xff01; &#xff08;1&#xff09;实现了对车牌和用户基本信息的增删改查的功能 &#xff01; &#xff08;2&#xff09;加入了对数据库的刷新和状态显示功能 &#xff…

反向传播算法的详细推导

反向传播算法的详细推导

R19 NR移动性增强概况

随着5G/5G-A技术不断发展和业务需求的持续增强&#xff0c;未来网络的部署将不断向高频演进。高频小区的覆盖范围小&#xff0c;用户将面临更为频繁的小区选择、重选、切换等移动性过程。 为了提升网络移动性能和保障用户体验&#xff0c;移动性增强一直是3GPP的热点课题。从NR…

部署Envoy

Envoy常用术语 envoy文档官网 Life of a Request — envoy 1.31.0-dev-e543e1 documentationhttps://www.envoyproxy.io/docs/envoy/latest/intro/life_of_a_request#terminology 基础总结 &#xff08;1&#xff09;Envoy Envoy自己本身是工作在L7层的一个proxy&#xff…

ABP框架+Mysql(一)

生成项目 通过用官网的来生成 Get Started | ABP.IO 配上官网地址&#xff0c;需要注意的是&#xff0c;数据库选择Mysql 选择完成后&#xff0c;执行页面上的两条命令 dotnet tool install -g Volo.Abp.Cli abp new Acme.BookStore -dbms MySQL -csf 生成结束后的内容 单击打…

锐捷校园网自助服务-字符过滤存在缺陷

锐捷校园网自助服务-字符过滤存在缺陷 漏洞介绍 令人感到十分遗憾的是&#xff0c;锐捷网络安全应急响应中心对漏洞上报似乎缺少了一些奖励&#xff0c;令人对官方上报漏洞失去了些许兴趣​。 该缺陷仅仅打破了安全检查防护&#xff0c;并没有造成实质性危害&#xff0c;至于…

生成ssh密钥,使用ssh连接linux系统

这里写目录标题 ssh密钥大概介绍1、密钥在哪里生成&#xff08;客户端/服务器&#xff09;&#xff1f;2、密钥生成是什么样子的&#xff1f; ssh &#xff08;生成密钥、密钥传输、配置连接、连接服务&#xff09;过程1、生成密钥提示一&#xff1a;输入保存密钥的文件&#x…

每日一题《leetcode--LCR 022.环形链表||》

https://leetcode.cn/problems/c32eOV/ 我们使用两个指针&#xff0c;fast 与 slow。它们起始都位于链表的头部。随后slow 指针每次向后移动一个位置&#xff0c;而fast 指针向后移动两个位置。如果链表中存在环&#xff0c;则fast 指针最终将再次与slow 指针在环中相遇。 stru…

AR和AP重分类(Regroup)[FAGLF101/OBBU/OBBV]

一、为什么AR和AP科目需要重分类 1.1 执行操作的前提(重要) 存在AR的当月总余额在贷方&#xff08;客户贷项凭证、预收账款等&#xff09;或AP的当月总余额在借方&#xff08;供应商贷项凭证、预收账款等&#xff09;&#xff0c;这种情况下无法真实的反映出资产和负债情况&…

阿里云语音合成TTS直播助手软件开发

阿里云的TTS比较便宜&#xff0c;效果比不了开源克隆的那种&#xff0c;比纯机器人效果好一点点 阿里云sambert https://help.aliyun.com/zh/dashscope/developer-reference/quick-start-13 Sambert系列模型 1万字1元 &#xff0c;每主账号每模型每月3万字免费 创建API-KEY htt…

Linux——多线程(二)

在上一篇博客中我们已经介绍到了线程控制以及对应的函数调用接口&#xff0c;接下来要讲的是真正的多线程&#xff0c;线程安全、线程互斥、同步以及锁。 一、多线程 简单写个多线程的创建、等待的代码 #include<iostream> #include<pthread.h> #include<un…