数据分析入门之数据分析方法

情到浓时终转凉″ 提交于 2020-01-27 03:09:25

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, …})

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

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!