数据可视化--数据探索性分析
数据可视化–数据探索性分析
文章目录
- 数据可视化--数据探索性分析
- 数据描述分析
- 计数据汇总分析
- 计量数据汇总分析
- 汇总性统计量
- 对于数值型数据
- 对于非数值型数据(如字符串、类别型数据)
- 数值排序
- 按索引排序
- 安置排序
- 算术运算与数据对齐
- 创建分层索引
- 通过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表
计数据汇总分析
- 频数:绝对数
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:该列中出现频率最高的值。
- freq:
top
所对应的值出现的次数。
数值排序
按索引排序
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)