数据分析--python
数据分析
参考python数据分析与挖掘实战-张良均著
数据探索
数据质量分析
- 缺失值分析
- 异常值分析
- 一致性分析
- 利用箱线图检验异常值,可以看出数据的分布范围大致情况,和1/4值、1/2值、3/4值得情况。
代码:
# -*- coding: utf-8 -*-
import pandas as pd
catering_sale = '../data/catering_sale.xls' # 餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列
print(data.describe())import matplotlib.pyplot as plt # 导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号plt.figure() # 建立图像
p = data.boxplot(return_type='dict') # 画箱线图,直接使用DataFrame的方法
x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签
y = p['fliers'][0].get_ydata()
y.sort() # 从小到大排序,该方法直接改变原对象
'''
用annotate添加注释
其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制
以下参数都是经过调试的,需要具体问题具体调试。
'''
for i in range(len(x)):if i>0:plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))else:plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))plt.show() # 展示箱线图
数据预处理阶段
数据清洗:
缺失值处理
- 3种方式:
1.删除该行数据,
2.数据插补(均值/中位数/众数插补、使用固定值、最近临插补、回归方法、插值法(拉格朗日插值法)参考地址:https://www.cnblogs.com/hjk-airl/p/15766870.html),
3.不处理
- 3种方式:
异常值处理
- 常用方法
- 删除含有异常值的数据
- 视为缺失值
- 平均值修正
- 不处理
- 常用方法
数据变换
- 简单函数板换(开方、平方、取对数、差分)
- 规范化
- 最大最小规范化
- 零-均值规范化
*σ原始数据标准差,
- 小数定标规范化
- 最大最小规范化
数据规范化代码
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
datafile = '../data/normalization_data.xls' # 参数初始化
data = pd.read_excel(datafile, header = None) # 读取数据
print(data)(data - data.min()) / (data.max() - data.min()) # 最小-最大规范化
(data - data.mean()) / data.std() # 零-均值规范化
data / 10 ** np.ceil(np.log10(data.abs().max())) # 小数定标规范化
数据属性规约
- 常用方法:决策树归纳、主成分分析
主成分分析PCA代码主要作用降维
#主成分分析 降维
import pandas as pd#参数初始化
inputfile = '../data/principal_component.xls'
outputfile = '../tmp/dimention_reducted.xls' #降维后的数据
data = pd.read_excel(inputfile, header = None) #读入数据from sklearn.decomposition import PCA
a = 4
pca = PCA()#降低到的4维度
PCA(copy=True,n_components=None,whiten=False)#copy=Ture不改变原始数据
pca.fit(data)#训练
low_d = pca.transform(data)##降低他的维度
print(pca.components_) #返回模型的各个特征向量
print(low_d)
print(pca.explained_variance_ratio_) #返回各个成分各自的方差百分比
挖掘建模
分类与预测
-回归分析、决策树、人工神经网络、贝叶斯网络、支持向量机
逻辑回归代码logistic
# -*- coding: utf-8 -*-# 代码5-1import pandas as pd
from sklearn.linear_model import LogisticRegression as LR
# 参数初始化
filename = '../data/bankloan.xls'
data = pd.read_excel(filename)
x = data.iloc[:,:8].values
y = data.iloc[:,8].valueslr = LR(max_iter=5000) # 建立逻辑回归模型
lr.fit(x, y) # 用筛选后的特征数据来训练模型print('模型的平均准确度为:%s' % lr.score(x, y))
神经网络分类
# -*- coding: utf-8 -*-import pandas as pd
# 参数初始化
inputfile = '../data/sales_data.xls'
data = pd.read_excel(inputfile, index_col = '序号') # 导入数据# 数据是类别标签,要将它转换为数据
# 用1来表示“好”“是”“高”这三个属性,用0来表示“坏”“否”“低”
data[data == '好'] = 1
data[data == '是'] = 1
data[data == '高'] = 1
data[data != 1] = 0
x = data.iloc[:,:3].astype(int)
y = data.iloc[:,3].astype(int)from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers.core import Dense, Activationmodel = Sequential() # 建立模型
model.add(Dense(input_dim = 3, units = 64))
model.add(Activation('relu')) # 用relu函数作为激活函数,能够大幅提供准确度
model.add(Dense(input_dim = 64, units = 1))
model.add(Activation('sigmoid')) # 由于是0-1输出,用sigmoid函数作为激活函数model.compile(loss = 'binary_crossentropy', optimizer = 'adam')
# 编译模型。由于我们做的是二元分类,所以我们指定损失函数为binary_crossentropy,以及模式为binary
# 另外常见的损失函数还有mean_squared_error、categorical_crossentropy等,请阅读帮助文件。
# 求解方法我们指定用adam,还有sgd、rmsprop等可选model.fit(x, y, epochs = 100, batch_size = 10) # 训练模型,学习一千次
yp = model.predict_classes(x).reshape(len(y)) # 分类预测from cm_plot import * # 导入自行编写的混淆矩阵可视化函数
cm_plot(y,yp).show() # 显示混淆矩阵可视化结果
聚类分析
- 常用方法:划分方法(k-means聚类算法)、层次分析方法
# -*- coding: utf-8 -*-import pandas as pd
# 参数初始化
inputfile = '../data/consumption_data.xls' # 销量及其他属性数据
outputfile = '../tmp/data_type.xls' # 保存结果的文件名
k = 3 # 聚类的类别
iteration = 500 # 聚类最大循环次数
data = pd.read_excel(inputfile, index_col = 'Id') # 读取数据
data_zs = 1.0*(data - data.mean())/data.std() # 数据标准化from sklearn.cluster import KMeans
model = KMeans(n_clusters = k, max_iter = iteration,random_state=1234) # 分为k类,并发数4
model.fit(data_zs) # 开始聚类# 简单打印结果
r1 = pd.Series(model.labels_).value_counts() # 统计各个类别的数目
print(r1)
r2 = pd.DataFrame(model.cluster_centers_) # 找出聚类中心
print(r2)
r = pd.concat([r2, r1], axis = 1) # 横向连接(0是纵向),得到聚类中心对应的类别下的数目
r.columns = list(data.columns) + ['类别数目'] # 重命名表头
print(r)# 详细输出原始数据及其类别
r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1) # 详细输出每个样本对应的类别
r.columns = list(data.columns) + ['聚类类别'] # 重命名表头
r.to_excel(outputfile) # 保存结果
print(r)def density_plot(data): # 自定义作图函数import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号p = data.plot(kind='kde', linewidth = 2, subplots = True, sharex = False)[p[i].set_ylabel('密度') for i in range(k)]plt.legend()return pltpic_output = '../tmp/pd' # 概率密度图文件名前缀
for i in range(k):density_plot(data[r['聚类类别']==i]).savefig('%s%s.png' %(pic_output, i))density_plot(data[r['聚类类别'] == i]).show()from sklearn.manifold import TSNE
tsne = TSNE(random_state=105)
tsne.fit_transform(data_zs) # 进行数据降维
tsne = pd.DataFrame(tsne.embedding_, index = data_zs.index) # 转换数据格式import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号# 不同类别用不同颜色和样式绘图
d = tsne[r['聚类类别'] == 0]
plt.plot(d[0], d[1], 'r.')
d = tsne[r['聚类类别'] == 1]
plt.plot(d[0], d[1], 'go')
d = tsne[r['聚类类别'] == 2]
plt.plot(d[0], d[1], 'b*')
plt.show()
在这里推荐两个好用的网站
scikit-learn中文社区:https://scikit-learn.org.cn/
包含七种启发式算法的代码库文档:https://scikit-opt.github.io/scikit-opt/#/zh/README
第一个
第二个
数据分析--python相关推荐
- 命名管道 win7未响应_大数据分析Python建立分析数据管道
如果您曾经想通过流数据或快速变化的数据在线学习Python,那么您可能会熟悉数据管道的概念.数据管道允许您通过一系列步骤将数据从一种表示形式转换为另一种表示形式.数据管道是数据工程的关键部分,我们将在 ...
- 谁说菜鸟不会数据分析python下载_刻意练习9:《谁说菜鸟不会数据分析python篇》第3章编程基础总计46页学习笔记...
学习计划MyPlan9 主题:<谁说菜鸟不会数据分析python篇>第3章节 编程基础,总计46页. 时间:7.15-7.21 周内完成 各位星友们,在这个星球里每个人都要逼迫自己学习未知 ...
- [转载] 大数据分析Python For循环教程
参考链接: Python中的迭代器函数1 大数据分析Python除了循环遍历列表之外,for循环还有很多其他功能,在现实世界的数据科学工作中,您可能需要将numpy数组和pandas DataFram ...
- python xlwings追加数据_大数据分析Python库xlwings提升Excel工作效率教程
原标题:大数据分析Python库xlwings提升Excel工作效率教程 Excel在当今的企业中非常非常普遍.在AAA教育,我们通常建议出于很多原因使用代码,并且我们的许多数据科学课程旨在教授数据分 ...
- 大数据分析Python和R语言的优缺点
从主观的角度来看,已有数十篇文章比较了Python与R.大数据分析Python和R语言的优缺点旨在更客观地研究语言.我们将在Python和R中并排分析数据集,并显示两种语言需要哪些代码才能获得相同的结 ...
- 经济金融投资计量与数据分析Python应用
经济金融投资计量与数据分析Python应用 2023/04/08.2023/04/09.2023/04/15 (线上 腾讯会议平台) 支持回放 不限时长 课程背景: 在大数据与人工智能时代,数据成为人 ...
- python相关性分析及画图_数据分析Python手绘图形库有哪些?
数据分析Python手绘图形库有哪些,今天,给大家介绍一个很酷的 Python 手绘风格可视化神包:cutecharts. 和 Matplotlib .pyecharts 等常见的图表不同,使用这个包 ...
- python编程大数据分析_大数据分析Python学习技巧
大数据分析Python是任何开发人员都应该知道的重要编程语言.许多程序员使用这种语言来构建网站,创建学习算法以及执行其他重要任务.但是尝试学习大数据分析Python可能会令人感到恐惧,沮丧和困难,尤其 ...
- python 数据分析 百度网盘_[百度网盘]利用Python进行数据分析(Python For Data Analysis中文版).pdf - Jan-My31的博客 - 磁力点点...
利用Python进行数据分析(Python For Data Analysis中文版).pdf - Jan-My31的博客 2018-5-27 · 链接:https://pan.baidu.com/s ...
- 视频教程-迈向数据科学家:带你玩转Python数据分析-Python
迈向数据科学家:带你玩转Python数据分析 苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python:轻松入门><跟老齐学Python ...
最新文章
- centos 7 php mysql apache_CentOS 7 搭建 Apache+MySQL+PHP
- 利用MEGA32制作辉光数码管显示电路
- python中类的用法_Python中的类和方法使用举例
- 第四代计算机软件系统,第四代计算机是什么计算机
- SQL语言之DQL语言学习(九)多表查询/链接查询 SQL99学习
- DNS 漏洞发现者 Dan Kaminsky 访谈录
- java上传文件至nas_使用JCIFS上传文件至NAS设备(Logon failure: unknown user name or bad password)解决...
- 为什么我不建议产品经理硬“抄”别人的用户画像?
- 动态瑜伽 静态瑜伽 初学者_瑜伽与编程有什么关系?
- docker容器别人访问很卡_一篇文章带你走进Docker的世界
- 利用hdparm工具配合crontab使硬盘不用时休眠
- 中国科学院大学2015年数学分析高等代数考研试题
- hunt和sniffit 的一些用法(非unix人员勿入)
- linux找不到无线网卡么,找不到无线网卡解决办法
- 关于支付(支付宝和微信)
- 软件项目管理MOOC(北邮)——第一章测试答案
- arduino开关控制RGB三色小灯程序,按一下亮一个颜色,松开熄灭,三种不同颜色,程序代码,以及连线图。
- php代码执行完整流程介绍
- if语句不能用连等!!!
- springboot使用mybatis多数据源动态切换的实现
热门文章
- html钓鱼游戏源代码,钓鱼才是游戏本体,盘点五款优秀的内置钓鱼小游戏
- 协议--SCCB与IIC的区别
- 老树开新花之shellcode_launcher免杀Windows Defender
- NBIOT模块 BC26 openCPU LWM2M协议传输数据到OneNet平台
- 交互原型设计工具:Axure RP5中文版教程
- cad二次开发C#学习记录5——导出属性块信息
- Java多态(简单介绍)
- ECS_FML——非负定矩阵
- 如何有效开展小组教学_(完整版)如何有效开展小组合作学习活动
- VMware安装的虚拟机窗口如何自适应屏幕大小