大师兄的数据分析学习笔记(四):探索性数据分析(三)

2022-04-15  本文已影响0人  superkmi

大师兄的数据分析学习笔记(三):探索性数据分析(二)
大师兄的数据分析学习笔记(五):探索性数据分析(四)

三、单因子与可视化

6. 数据分类
数据类型 描述 案例
定类数据 根据事务离散、无差别属性进行的分类。 民族、性别
定序数据 可以界定数据的大小,但不能测定差值。 职称等级
定距数据 可以界定数据大小的同时,可测定差值,无绝对零点(乘除无意义)。 温度
定比数据 可以界定数据大小,可测定差值、有绝对零点。 身高体重
7. 异常值分析
7.1 连续异常值
>>>import numpy as np

>>>k = 1.5
>>>data = np.append(np.random.rand(100),(np.random.rand(10)*10))
>>>Q_L = np.quantile(data,0.25,interpolation='lower')
>>>Q_U = np.quantile(data,0.75,interpolation='higher')
>>>IQR = Q_U - Q_L
>>>outlier_step = k*IQR
>>>abnormal = data[(data>Q_U+outlier_step)|(data<Q_L-outlier_step)]
>>>print(f"上界:{Q_U+outlier_step} 下界:{Q_L-outlier_step}")
上界:1.5504747843883402 下界:-0.3883817114860346
>>>print(f"异常值:{abnormal}")
异常值:[8.17103381 8.41505442 1.88209875 2.42209849 6.89254331 4.46870627
 3.74401613 5.98124444 9.12398726]
7.2 离散异常值
>>>import numpy as np

>>>values = ["A","B","C",None]
>>>data = np.random.choice(values,size=100)
>>>print(f"100个数据中的异常值为{len([x for x in data if not x])}")
100个数据中的异常值为26
7.3 知识异常值
8. 对比分析
8.1 对比内容
相对数 描述
结构相对数 部分与整体进行相比,比如用产品合格率评价产品质量。
比例相对数 总体内用不同部分的数值进行比较,比如产业结构中农业、重工业和服务业之间的占比变化。
比较相对数 同一时空下的相似或同质的指标进行对比,比如不同时期下商品的价格。
动态相对数 时间概念的相对数,比如用户数量的增速。
强度相对数 性质不同,担忧相互联系的属性及其联合,比如gdp和人均gdp的比较。
8.2 对比方法
9. 结构分析
9.1 静态结构分析
>>>import matplotlib.pyplot as plt
>>>import pandas as pd
>>>plt.rcParams['font.sans-serif']=['SimHei']

>>>data = {
>>>    "A班":{"男生":34,"女生":17},
>>>    "B班":{"男生":26,"女生":44},
>>>    "C班":{"男生":42,"女生":8},
>>>}

>>>data = pd.DataFrame.from_dict(data)
>>>fig,(ax1,ax2,ax3) = plt.subplots(1,3)
>>>ax1.pie(data.A班,labels=data.index)
>>>ax2.pie(data.B班,labels=data.index)
>>>ax3.pie(data.C班,labels=data.index)
>>>ax1.set_title("A班")
>>>ax2.set_title("B班")
>>>ax3.set_title("C班")
>>>plt.show()
9.2 动态结构分析
>>>import pandas as pd
>>>import matplotlib.pyplot as plt

>>>data = {
>>>    "2022-2":{"男生":21,"女生":16},
>>>    "2022-3":{"男生":25,"女生":14},
>>>    "2022-4":{"男生":20,"女生":22},
>>>}

>>>data = pd.DataFrame.from_dict(data,orient="index")
>>>data['男生比例'] = data['男生']/(data['男生']+data['女生'])
>>>data['女生比例'] = data['女生']/(data['男生']+data['女生'])

>>>x = data.index
>>>plt.plot(x,data['男生比例'])
>>>plt.plot(x,data['女生比例'])
>>>plt.legend()
>>>plt.show()
10. 分布分析
10.1 直接获得概率分布
10.2 判断是不是正态分布
10.3 极大似然
  • 如果一份数据属于正态分布,就一定可以确定一个均值和一个方差;
  • 使该均值和方差确定的正态分布下的数据点在这个确定的分布的取值是它们的概率;
  • 这些值的和或者集在刚刚确定的均值和方差下是最大的;
  • 取这些值的和或者集的对数,这个对数就叫极大似然
>>>import matplotlib.pyplot as plt
>>>import numpy as np
>>>import pandas as pd
>>>from scipy.stats import norm

>>>u = 30
>>>d = 2
>>>x = pd.DataFrame(u+d*np.random.randn(5000))
>>>print(f"均值:{x.mean().values}")
>>>print(f"中位数:{x.median().values}")
>>>print(f"峰度:{x.kurt().values}")
>>>print(f"偏度:{x.skew().values}")
>>>print(f"正态分布极大似然估计:{norm.fit(x)}")
>>>print(f"t分布极大似然估计:{t.fit(x)}")

>>>plt.hist(x,bins=100)
>>>plt.show()
均值:[30.01113002]
中位数:[29.99309605]
峰度:[-0.02476348]
偏度:[0.0575392]
正态分布极大似然估计:(30.011130016680593, 1.9851376026711942)
t分布极大似然估计:(44.04636433569924, 30.009866284533302, 1.9221391065961893)
上一篇 下一篇

猜你喜欢

热点阅读