Python 探索性数据分析方法与应用
2021/9/27 17:41:00
本文主要是介绍Python 探索性数据分析方法与应用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据挖掘
探索性数据分析方法与应用
一、频率和众数是简单描述数据分布状况的常见度量,请编写函数实现序列元素频率序列及其众数的计算,并自行构建数据验证方法。
代码:
# -*- coding: utf-8 -*- #频率 and 众数 freDict={} #统计元素数量 def count(l): for item in l: if item in freDict.keys(): freDict[item] +=1 else: freDict[item] =1 return #求元素频率 def transform(): s = float(sum(freDict.values())) for k in freDict.keys(): freDict[k] /=s return #获取众数 def mode(): max_value = list(freDict.values())[0] max_key = list(freDict.keys())[0] for key,value in freDict.items(): if value>max_value: max_value=value max_key=key return max_key l=['a','b','c','d','e','a','b','c','d','e','c','d','e'] count(l) print("Count for Distinct:",freDict) transform() print("Frequency by precent:",freDict) print("Mode:",mode())
输出结果:
二、百分位数也是简单描述数据分布特征的常用度量,请编写函数实现数据序列百分位数的计算,并计算iris数据集中四个属性的百分位数。
代码:
# -*- coding: utf-8 -*- from math import * import numpy as np iris = np.loadtxt(r"E:\iris_proc.data",delimiter=",") rel = np.linspace(0,0, 11*5).reshape(11,5) rel[...,0]=range(0,101,10) for col in range(1,5): rel[...,col]=[np.percentile(iris[...,col-1], p) for p in rel[...,0]] print(rel)
输出结果:
三、衡量数据序列集中程度的统计量通常由均值、中位数和截断均值,请编写函数分别实现均值、中位数和截断均值的计算,并分别针对iris数据集的四个属性进行计算。
代码:
# -*- coding: utf-8 -*- import math import numpy as np def mean(x): return sum(x)/ float(len(x)) def median(y): x=np.sort(y) if len(x)%2==0: return (x[len(x)//2]+x[len(x)//2+1])/2.0 else: return x[len(x)//2] def trimmean(x,p): b= np.percentile(x, p//2) t= np.percentile(x, 100-p//2) return mean([i for i in x if b <= i <= t]) iris = np.loadtxt(r"E:\iris_proc.data",delimiter=",") rel = np.linspace(0,0, 3*4).reshape(3,4) for i in range(3): for j in range(4): if(i==0): rel[0,j] = mean(iris[...,j]) elif(i==1): rel[1,j] = median(iris[...,j]) else: rel[2,j] = trimmean(iris[...,j], 20) print(rel)
输出结果:
四、简单描述数据序列分散程度的统计量通常由极差、标准差、绝对平均偏差(AAD)、中位数绝对偏差(MAD)、四分位数极差(IQR)等,请编写函数实现这些统计量的计算,并针对iris数据集的四个属性进行计算。
代码:
import numpy as np from math import * def rang(x): return max(x)-min(x) def var(x): return np.var(x)*len(x)/(len(x)-1) def std(x): return sqrt(var(x)) def aad(x): x_mean = np.mean(x) return sum([abs(x[i]-x_mean) for i in range(len(x))])/len(x) def mad(x): x_median = np.median(x) return np.median([abs(x[i]-x_median) for i in range(len(x))]) def iqr(x): return np.percentile(x,75)-np.percentile(x,25) iris = np.loadtxt("E:\iris_proc.data",delimiter=',') rel=np.linspace(0,0,5*4).reshape(5,4) for col in range(4): rel[0, col] = rang(iris[..., col]) rel[1, col] = std(iris[..., col]) rel[2, col] = aad(iris[..., col]) rel[3, col] = mad(iris[..., col]) rel[4, col] = iqr(iris[..., col]) print(rel)
输出结果:
五、茎叶图是描述数据分布的一种简单可视化方法,请变成实现茎叶图的输出,完成iris数据集中的第一个属性萼片长度的茎叶图输出。
代码:
from itertools import groupby import numpy as np iris = np.loadtxt("E:\iris_proc.data",delimiter=',') data = iris[...,0]*10 data = sorted([str(int(e)) for e in data]) #k 和 h 分别为每个数值的十位数字和个位数字的字符形式 for k,g in groupby(data,key=lambda x:int(x)//5): lst = map(str,[int(h)%10 for h in list(g)]) print(k//2,'|',''.join(lst))
输出结果:
这篇关于Python 探索性数据分析方法与应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门
- 2024-11-14Python编程入门指南
- 2024-11-13Python基础教程
- 2024-11-12Python编程基础指南
- 2024-11-12Python基础编程教程
- 2024-11-08Python编程基础与实践示例
- 2024-11-07Python编程基础指南
- 2024-11-06Python编程基础入门指南
- 2024-11-06怎么使用python 计算两个GPS的距离功能-icode9专业技术文章分享