当前位置: 首页 > ds >正文

数据可视化--数据探索性分析

数据可视化–数据探索性分析


文章目录

  • 数据可视化--数据探索性分析
  • 数据描述分析
    • 计数据汇总分析
    • 计量数据汇总分析
    • 汇总性统计量
      • 对于数值型数据
      • 对于非数值型数据(如字符串、类别型数据)
  • 数值排序
    • 按索引排序
    • 安置排序
  • 算术运算与数据对齐
  • 创建分层索引
    • 通过from_tuples()方法创建MultiIndex类的对象
    • 通过from_arrays()方法创建MultiIndex类的对象


数据描述分析

import pandas as pd
pd.set_option('display.max_rows', 10)
df=pd.read_excel('./data/DaPy_data.xlsx','BSdata')
df  #读取数据

在这里插入图片描述

  • set_option设置显示最大行数
  • read_excel 读取Excel表
  • read_csv 读取csv表

计数据汇总分析

  1. 频数:绝对数
t1 = df['性别'].value_counts(normalize=False)
  • normaliz 用于控制返回值的结果,默认为False,会返回每个唯一值在指定列中出现的次数,也就是计数结果。
  • True的话会返回每个唯一值在指定列中出现的频率,即每个唯一值的计数除以该列的总计数,结果是一个比例值,范围在 0 到 1 之间。

计量数据汇总分析

  • mean() 平均数
  • median() 中位数
  • X.max()-X.min() 极差
  • var() 方差
  • std() 标准差
  • X.quantile(0.75)-X.quantile(0.25) 四分位数间距(IQR)
  • skew() 偏度
  • kurt()峰度

需要选取的是一列的值

汇总性统计量

计算总体的方差

df.describe()

在这里插入图片描述
计算某几列的统计量

df[['性别','开设','课程','软件']].describe() 

在这里插入图片描述

对于数值型数据

如果这些列是数值型(如整数或浮点数),describe() 方法会计算并返回以下统计量:

  • count:该列中非缺失值的数量。
  • mean:该列的平均值。
  • std:该列的标准差,用于衡量数据的离散程度。
  • min:该列中的最小值。
  • 25%:该列数据的第一四分位数,即有 25% 的数据小于此值。
  • 50%:该列数据的中位数,即有 50% 的数据小于此值。
  • 75%:该列数据的第三四分位数,即有 75% 的数据小于此值。
  • max:该列中的最大值。

对于非数值型数据(如字符串、类别型数据)

如果这些列是非数值型数据,describe() 方法会计算并返回以下统计量:

  • count:该列中非缺失值的数量。
  • unique:该列中唯一值的数量。
  • top:该列中出现频率最高的值。
  • freqtop 所对应的值出现的次数。

数值排序

按索引排序

sort_index() 可以根据行索引或列索引的大小对Series类和DataFrame类的对象进行排序。

sort_index(axis=0, level=None, ascending=True, inplace=False, 
kind='quicksort', na_position='last', sort_remaining=True, 
ignore_index=False, key=None)
  • axis:表示沿着哪个方向的轴排序,取值可以是0或'index'、1或'columns' 。其中0或'index'表示按行方向排序,1或'columns'表示按列方向排序。
  • ascending:表示是否升序排列,默认值为True
  • kind:表示排序算法,可以取值为'quicksort''mergesort''heapsort''stable' 。其中'quicksort'表示快速排序算法,'mergesort'表示归并排序算法,'heapsort'表示堆排序算法,'stable'表示稳定排序算法。
data = {'B': [6, 2, 3, 4, 5],'A': [10, 20, 30, 40, 50],'C': [100, 200, 300, 400, 500]
}
df = pd.DataFrame(data,index=[5,4,3,2,1])
df1 = df.sort_index(axis=0)
print(df1)
df1 = df.sort_index(axis=1)
print(df1)

在这里插入图片描述

安置排序

sort_values()方法用于对Series类和DataFrame类对象按值排序。以DataFrame类对象为例,其语法格式如下:

sort_values(by, axis=0, ascending=True, inplace=False, 
kind='quicksort', na_position='last', ignore_index=False, key=None)
  • by:指定用于排序的列。
  • na_position:确定NaN值的位置,取值仅为'first''last' 。默认'last' ,即把NaN值放在排序结果的最后;若设为'first' ,则将NaN值置于开头。

算术运算与数据对齐

在pandas中,Series类DataFrame类对象进行算术运算时,会先将索引相同的数据按位置对齐,对齐后再进行相应运算,未对齐位置用NaN补齐。

obj_one = pd.Series(range(10, 13), index=range(3))
obj_two = pd.Series(range(20, 25), index=range(5))
print(obj_one)
print(obj_two)
obj_one + obj_two

在这里插入图片描述
如果希望不使用NAN补齐,则可以在调用add()方法时给fill_value参数传值,fill_value将会使用对象中存在的数据进行补充。

obj_one.add(obj_two, fill_value=0)

在这里插入图片描述

创建分层索引

在pandas 中,分层索引其实就是一个MultiIndex 类的对象。MultiIndex 类中提供了一些创建分层索引的方法

  • from_tuples() 根据元组列表创建MultiIndex类的对象
  • from_arrays() 根据嵌套列表创建MultiIndex类的对象
  • from_product() 从多个集合的笛卡尔乘积中创建MultiIndex类的对象。

通过from_tuples()方法创建MultiIndex类的对象

from_tuples()方法可以根据包含若干个元组的列表创建MultiIndex类的对象,其中元组的第一个元素作为外层索引,元组的第二个元素作为内层索引。

import pandas as pd# 导入MultiIndex类
from pandas import MultiIndex# 定义包含元组的列表
list_tuples = [('A','A1'), ('A','A2'), ('B','B1'), ('B','B2'), ('B','B3')]# 使用from_tuples方法创建MultiIndex对象
multi_index = MultiIndex.from_tuples(tuples=list_tuples)# 创建一个DataFrame对象,使用刚才创建的MultiIndex作为索引
data = {'数值': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data, index=multi_index)print(df)

在这里插入图片描述

通过from_arrays()方法创建MultiIndex类的对象

from_arrays()方法用于根据一个嵌套列表创建MultiIndex类的对象,其中嵌套的第一个列表将作为外层索引嵌套的第二个列表将作为内层索引

import pandas as pd# 导入MultiIndex类
from pandas import MultiIndex# 定义包含元组的列表
list_tuples = [('A','A1'), ('A','A2'), ('B','B1'), ('B','B2'), ('B','B3')]
list_arrays = [['A','A','B','B','B'],['A1','A2','B1','B2','B3']]
# 使用from_tuples方法创建MultiIndex对象
multi_index = MultiIndex.from_arrays(arrays=list_arrays)# 创建一个DataFrame对象,使用刚才创建的MultiIndex作为索引
data = {'数值': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data, index=multi_index)print(df)

在这里插入图片描述

http://www.xdnf.cn/news/1297.html

相关文章:

  • 数据库MySQL学习——day1(创建表与数据类型)
  • win10中打开python的交互模式
  • Ubuntu 22.04安装IGH
  • CRM系统的功能有哪些?CRM系统功能指南
  • RenderDoc 使用介绍
  • STL C++详解——priority_queue的使用和模拟实现 堆的使用
  • 高新技术申报有哪些潜在风险?如何避免?
  • AI 模型可靠性危机:DeepSeek 输出异常的技术归因与防范实践
  • 算力网络有关论文自用笔记(2)
  • L1-5、Prompt 写作中的常见误区
  • 公路路面病害检测
  • 【AI】SpringAI 第五弹:接入千帆大模型
  • 通过AI工具或模型创建PPT的不同方式详解,结合 Assistants API、DALL·E 3 等工具的功能对比及表格总结
  • 用红黑树封装出set和map
  • Pandas与NumPy高效结合使用指南
  • 利用内联注解析释差异构造多语言sql注入 -- b01lers CTF defense-in-depth
  • Linux从入门到荒废-查找文件中重复的数据
  • SSH 互信被破坏能导致 RAC 异常关闭吗
  • AI大模型:(二)2.3 预训练自己的模型
  • 管理+技术”双轮驱动工业企业能源绿色转型
  • 人工智能赋能医疗影像诊断:开启精准医疗新时代
  • Java 中 == 和 equals() 的区别
  • Pytorch实用教程(一):torch.compile计算提速
  • Linux内核之文件驱动随笔
  • 【Git】fork 和 branch 的区别
  • 狄拉克梳状函数的傅里叶变换
  • 联易融与中交第一航务工程局深化合作交流,共探创新发展新路径
  • 模型 替罪羊效应
  • react组件之间如何使用接收到的className(封装一个按钮案例)
  • Python 之 pyecharts 使用