1、基本统计
■基本统计分析:又叫描述性统计分析, 一般统计某个变量的最小值、第一四分位值、中值、第三四分位值、以及最大值。
-
常用的统计指标:
- 计数、求和、平均值、方差、标准差
-
描述性统计分析函数:
- describe()
-
常用的统计函数:
统计函数 | 注释 |
---|---|
size | 计数 |
sum | 求和 |
mean | 均值 |
var | 方差 |
std | 标准差 |
1.1、导入数据
from pandas import read_csv
data = read_csv('F:\数据分析\数据分析3\章节8数据分析\8\8.1\data.csv')
1.2、数据描述
data.score.describe()
1.3、统计各值
data.score.min() #96
data.score.max() #140
data.score.sum() #1574
data.score.mean() #121.07692307692308
data.score.var() #154.91025641025644
data.score.std() #112.44629488684309
data.score.size #13,注意,这个没有括号
2、分组分析
■ 分组分析:是指根据分组字段,将分析对象划分成不同的部分,以进行对比分析各组之间的差异性的一种分析方法。
-
常用的统计指标参数
- 计数、求和、平均值
-
分组统计函数:
- groupby(by= [分组列1,分组列2, …
[统计列1,统计列2, …] - .agg({统计列别名1:统计函数1,统计列别名2:统计函数2, …})
- groupby(by= [分组列1,分组列2, …
2.1、导入数据
import numpy
from pandas import read_csv
data = read_csv('F:\数据分析\数据分析3\章节8数据分析\8\8.2\data.csv')
2.2、增加一倍数列
data['score2'] = data['score']*2
2.3、基本统计
data.groupby(by=['class'])['score'].agg({
'总分':numpy.sum,
'人数':numpy.size,
'平均值':numpy.mean,
'方差':numpy.var,
'标准差':numpy.std
})
2.4、多重分组统计
data.groupby(by=['class','name'])[['score','score2']].agg([
numpy.size,
numpy.sum
])
2.5、查看数据
result = data.groupby(by=['class'])['score'].agg({
'总分':numpy.sum,
'人数':numpy.size,
'平均值':numpy.mean,
'方差':numpy.var,
'标准差':numpy.std
})
print(result)
(1)查看索引
(2)查看表头
(3)查看平均值列
2.6、多层索引查询
2.6.1、建立多层索引
result2 = data.groupby(by=['class','name'])[['score','score2']].agg([
numpy.size,
numpy.sum
])
2.6.2、索引查询
(1)查询索引
(2)查询表头
(3)单值查询
(4)多值查询
2.7、重置索引
result2.reset_index()
3、分布分析
■分布分析:是指根据分析目的,将数据(定量数据)进行等距或者不等距的分组,进行研究各组分布规律的一种分析方法。
3.1、导入数据
from pandas import read_csv
data = read_csv('F:\数据分析\数据分析3\章节8数据分析\8\8.3\\data.csv')
3.2、数据分组
bins = [min(data['年龄'])-1,20,30,40,max(data['年龄'])+1]
labels = ['20岁及以下','21~30岁','31~40岁','41岁以上']
年龄分层 = pandas.cut(data.年龄,bins,labels)
data['年龄分层'] = 年龄分层
data
3.3、统计分组数据
data.groupby(by=['年龄分层'])['年龄'].agg({'人数':numpy.size})
4、交叉分析
■交叉分析:通常用于分析两个或两个以上,分组变量之间的关系,以交叉表形式进行变量间关系的对比分析;
●定量、定量分组交叉
●定量、定性分组交叉
●定性、定性分组交叉
4.1、导入数据并分组
import pandas,numpy
from pandas import read_csv
data = read_csv('F:\数据分析\数据分析3\章节8数据分析\8\8.4\data.csv')
#数据分组
bins = [min(data['年龄'])-1,20,30,40,max(data['年龄'])+1]
labels = ['20岁及以下','21~30岁','31~40岁','41岁以上']
年龄分层 = pandas.cut(data.年龄,bins,labels)
data['年龄分层'] = 年龄分层
4.2、交叉分析(透视表)
男女年龄段人数及平均年龄:
result1 = data.pivot_table(
values=['年龄'],
index=['年龄分层'],
columns=['性别'],
aggfunc=[numpy.size,numpy.mean]
)
result1
男女年龄段的标准差:
result2 = data.pivot_table(
values=['年龄'],
index=['年龄分层'],
columns=['性别'],
aggfunc=[numpy.std]
)
result2
4.2、合并DataFrame
5、结构分析
■结构分析:是在分组的基础上,计算各组成部分所占的比重,进而分析总体的内部特征的一种分析方法。
- axis 参数说明
- 0——>按列运算
- 1 ——>按行运算
5.1、导入数据
import numpy
from pandas import read_csv
data = read_csv('F:\数据分析\数据分析3\章节8数据分析\8\8.5\data.csv')
data
5.2、交叉分析(透视表)
data_pt = data.pivot_table(
values=['月消费(元)'],
index=['省份'],
columns=['通信品牌'],
aggfunc=[numpy.sum]
)
data_pt
5.3、交叉分析运算
5.3.1、直接求和
5.3.2、按列求和
总结: 直接求和默认为案列求和
5.3.3、按行求和
5.5.4、每个省份通讯品牌占比
data_pt.div(data_pt.sum(axis=1),axis=0)
5.5.5、通讯品牌在每个省份占比
data_pt.div(data_pt.sum(axis=0),axis=1)
6、相关关系
■相关分析( correlation analysis ) :是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象探讨其相关方向以及相关程度,是研究随机变量之间的相关关系的一种统计方法。
■相关系数:可以用来描述定量变量之间的关系
-
相关分析函数:
- DataFrame.corr()
- Series.corr(other)
-
函数说明:
- 如果由数据框调用corr方法,那么将会计算每个列两两之间的相似度
- 如果由序列调用corr方法,那么只是计算该序列与传入的序列之间的相关度
-
返回值:
- DataFrame调用 :返回DataFrame
- Series调用 :返回一个数值型,大小为相关度
6.1、导入数据
from pandas import read_csv
data = read_csv('F:\数据分析\数据分析3\章节8数据分析\8\8.6\data.csv')
data
6.2、两个数列的相关度
data['文盲率'].corr(data['人口'])
#两个方向可以互换
data['人口'].corr(data['文盲率'])
由于0.1<0.3,所以它们为低度相关关系
6.3、多数列的相关度
data.loc[:,['超市购物率','网上购物率','文盲率','人口']].corr()
来源:CSDN
作者:阿优乐扬
链接:https://blog.csdn.net/ayouleyang/article/details/103942176