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

text = "Python is a powerful programming language. Python is widely used in web development, data analysis, and artificial intelligence."
count = text.count('Python')
print(count)
#>>2

numbers = [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     1
        18     1
        22     1
Male    18     1
        19     1
        20     2
        21     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 = 0
    for d in data:
        total+=d
    return total

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

primeflex Display盒模型显示相关样式实战案例

01 Display盒子模式相关样式 基础样式 ClassPropertieshiddendisplay: none;blockdisplay: block;inlinedisplay: inline;inline-blockdisplay: inline-block;flexdisplay: flex;inline-flexdisplay: inline-flex; 样式说明&#xff1a; hidden&#xff1a;隐藏&#xff0c…

Arrays(操作数组工具类)、Lambda表达式

package exercise;import java.util.Arrays;public class ArraysDemo {public static void main(String[] args) {int[] arr {1, 2, 3, 4, 5};//将数组变成字符串System.out.println(Arrays.toString(arr));//二分查找法查找元素//细节1&#xff1a;1.数组必须是有序的 2.元素…

c# 学习教程

打印语句 折叠代码 变量 整形 浮点型 特殊类型

Java18+前端html+后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统(用户端)介绍

Java18前端html后端springboot一套可在线预约、在线下单的家政预约上门服务系统源码 家政系统&#xff08;用户端&#xff09;介绍 家政服务用户端是一个为家庭用户提供便捷、高效家政服务的应用程序。 以下是家政服务用户端的详细功能描述&#xff1a; 一、注册与登录&#…

离线环境下安装NVIDIA驱动、CUDA(HUAWEI Kunpeng 920 + NVIDIA A100 + Ubuntu 20.04 LTS)

文章目录 前言 一、基础环境 1.1、处理器型号 1.2、英伟达显卡型号 1.3、操作系统 1.4、软件环境 二、取消内核自动升级 2.1、查看正在使用的内核版本 2.2、查看正在使用的内核包 2.3、禁止内核更新 三、配置本地apt源 3.1、挂载iso镜像文件 3.2、配置apt源 3.3、…

形式参数和实际参数

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在调用函数时&#xff0c;大多数情况下&#xff0c;主调函数和被调用函数之间有数据传递关系&#xff0c;这就是有参数的函数形式。函数参数的作用是…

如何仿一个抖音极速版领现金的进度条动画?

效果演示 不仅仅是实现效果&#xff0c;要封装&#xff0c;就封装好 看完了演示的效果&#xff0c;你是否在思考&#xff0c;代码应该怎么实现&#xff1f;先不着急写代码&#xff0c;先想想哪些地方是要可以动态配置的。首先第一个&#xff0c;进度条的形状是不是要可以换&am…

【图解IO与Netty系列】Reactor模型

Reactor模型 Reactor模型简介三类事件与三类角色Reactor模型整体流程 各种Reactor模型单Reactor单线程模型单Reactor多线程模型主从Reactor模型 Reactor模型简介 Reactor模型是服务器端用于处理高并发网络IO请求的编程模型&#xff0c;与传统的一请求一线程的同步式编程模型不…

day05-多任务-正则-装饰器

一、多任务 1-进程和线程 进程是操作系统分配资源的最小单元 线程执行程序的的最小单元 线程依赖进程&#xff0c;可以获取进程的资源 一个程序执行 先要创建进程分配资源&#xff0c;然后使用线程执行任务 默认情况下一个进程中有一个线程 2-多任务介绍 运行多个进程或线程执…

Day44 动态规划part04

背包问题 01背包问题&#xff1a;每件物品只能用一次完全背包问题&#xff1a;每件物品可以使用无数次 01背包问题 暴力解法&#xff1a;每一件物品其实只有两个状态&#xff0c;取或者不取&#xff0c;所以可以使用回溯法搜索出所有的情况&#xff0c;那么时间复杂度就是 o…

【LeetCode刷题】二分查找:寻找旋转排序数组中的最小值、点名

【LeetCode刷题】Day 14 题目1&#xff1a;153.寻找旋转排序数组中的最小值思路分析&#xff1a;思路1&#xff1a;二分查找&#xff1a;以A为参照思路2&#xff1a;二分查找&#xff0c;以D为参照 题目2&#xff1a;LCR 173.点名思路分析&#xff1a;思路1&#xff1a;遍历查找…

【显示方案IC-速显微】

最近偶然间接触到“速显微”的显示方案&#xff0c;个人体验了一把感觉还是挺顺手的&#xff0c;虽然手里没有板子没有上手测试一番。 这是他们的官网链接&#xff1a; https://www.thorsianway.com/product/chip 从官网可以看到有两颗个系列的IC已经量产&#xff1a;GC9005和G…

物联网实战--平台篇之(十一)设备管理后台

目录 一、设备数据库 二、添加设备 三、排序设备 四、重命名设备 五、删除设备 六、移动设备 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/categ…

词法分析器的设计与实现--编译原理操作步骤,1、你的算法工作流程图; 2、你的函数流程图;3,具体代码

实验原理&#xff1a; 词法分析是编译程序进行编译时第一个要进行的任务&#xff0c;主要是对源程序进行编译预处理之后&#xff0c;对整个源程序进行分解&#xff0c;分解成一个个单词&#xff0c;这些单词有且只有五类&#xff0c;分别时标识符、关键字&#xff08;保留字&a…

【匹配线段问题】

问题&#xff1a; 如下图所示。图中有两行正整数&#xff0c;每行中有若干个正整数。如果第一行的某个数r与第二行的某个数相同&#xff0c;这样就可以在这两个正整数之间划一条线&#xff0c;并称之为r-匹配线段。下图中存在3-匹配线段和2-匹配线段。 请编写完整程序&#xf…

[12] 使用 CUDA 加速排序算法

使用 CUDA 加速排序算法 排序算法被广泛用于计算应用中有很多排序算法&#xff0c;像是枚举排序或者说是秩排序、冒泡排序和归并排序&#xff0c;这些排序算法具有不同的&#xff08;时间和空间&#xff09;复杂度&#xff0c;因此对同一个数组来说也有不同的排序时间&#xf…

9款实用而不为人知的小众软件推荐!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 在电脑软件的浩瀚海洋中&#xff0c;除了那些广为人知的流行软件外&#xff0c;还有许多简单、干净、功能强大且注重实用功能的小众软件等待我们…

Ubuntu中PDF阅读器和编辑器

1. 福昕PDF编辑器 1.1. 下载地址 PDF阅读器下载_PDF编辑器下载_PDF软件官方下载_福昕软件官网 1.2. 安装 sudo dpkg -i signed_com.foxit.foxitpdfeditor_xxx_amd64_UOS.deb 2. WPS DPF 2.1. 下载地址 WPS Office 2019 for Linux-支持多版本下载_WPS官方网站 2.2. 使用 …

【LeetCode算法】第111题:二叉树的最小深度

目录 一、题目描述 二、初次解答 三、官方解法 四、总结 一、题目描述 二、初次解答 1. 思路&#xff1a;二叉树的先序遍历。求出左子树的最小高度&#xff0c;求出右子树的最小高度&#xff0c;最终返回左子树和右子树的最小高度1。关键&#xff1a;若左子树的高度为0&…

【Linux】写一个日志类

文章目录 1. 源代码2. 函数功能概览3. 代码详细解释3.1 头文件和宏定义3.2 Log类定义3.3 打印日志的方法3.4 操作符重载和析构函数3.5 可变参数函数的原理 4. 测试用例 1. 源代码 下面代码定义了一个 Log 类&#xff0c;用于记录日志信息。这个类支持将日志信息输出到屏幕、单…