【python数据分析】用python进行数据探索1(含各种数据基础分析方法以及直方图、条形图、折线图等基本画法)
从这周开始,我将在此记录我对《python数据分析与挖掘实战》(第二版)的跟读情况,将我认为的值得学习的点记录在这里,有时候也会对相关知识进行拓展,保持每周更新3-4次的频率,争取在下次开学前把这本书学习完。同时,因为python中库的更新,书中原来使用的一些函数已经发生变化,我也会相应进行修改。
一、数据特征分析
1. 定量数据的分布分析——直方图
import pandas as pd
import numpy as np
catering_sale = './Python数据分析与挖掘实战(第2版)/chapter3/demo/data/catering_fish_congee.xls' # 餐饮数据
data = pd.read_excel(catering_sale,names=['date','sale']) # 读取数据bins = [0,500,1000,1500,2000,2500,3000,3500,4000]
labels = ['[0,500)','[500,1000)','[1000,1500)','[1500,2000)','[2000,2500)','[2500,3000)','[3000,3500)','[3500,4000)'] data['sale分层'] = pd.cut(data.sale, bins, labels=labels)
aggResult = data.groupby('sale分层')['sale'].count()pAggResult = round(aggResult/aggResult.sum(), 2, ) * 100import matplotlib.pyplot as plt
plt.figure(figsize=(10,6)) # 设置图框大小尺寸
pAggResult.plot(kind='bar',width=0.8,fontsize=10) # 绘制频率直方图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.title('季度销售额频率分布直方图',fontsize=20)
plt.show()
结果如图:
上面其实是用条形图来实现条形图的绘制,同时,bins也都是自己设置的范围,实际我们用hist函数可以更便捷实现多种直方图的画法。
plt.figure(figsize=(10,6))
bins = range(0,4500,500)
nums,bins,patches = plt.hist(data['sale'],bins,edgecolor='k')
plt.xticks(bins,bins)
for num,bin in zip(nums,bins):plt.annotate(num,xy=(bin,num),xytext=(bin+1.5,num+0.5))
plt.title(u'季度销售额分布直方图')
plt.show()
结果如图:
关于数据分箱用法pd.cut可以参考:数据分箱之pd.cut() - 知乎
python中groupby的用法可以参考:Python中的groupby分组_Emily-CSDN博客_groupby python
python中分组函数groupby和分组运算函数agg小结_数据小白的进阶之路-CSDN博客_python分组函数
直方图的多种画法可以参考:
matplotlib.pyplot.hist — Matplotlib 3.5.0 documentation
python 中直方图绘制 - LiErRui - 博客园
2. 定性数据分布分析——条形图,饼图
import pandas as pd
import matplotlib.pyplot as plt
catering_dish_profit = './Python数据分析与挖掘实战(第2版)/chapter3/demo/data/catering_dish_profit.xls' # 餐饮数据
data = pd.read_excel(catering_dish_profit) # 读取数据# 绘制饼图
x = data['盈利']
labels = data['菜品名']
plt.figure(figsize = (8, 6)) # 设置画布大小
plt.pie(x,labels=labels) # 绘制饼图
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.title('菜品销售量分布(饼图)') # 设置标题
plt.axis('equal')
plt.show()# 绘制条形图
x = data['菜品名']
y = data['盈利']
plt.figure(figsize = (8, 4)) # 设置画布大小
plt.bar(x,y)
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.xlabel('菜品') # 设置x轴标题
plt.ylabel('销量') # 设置y轴标题
plt.title('菜品销售量分布(条形图)') # 设置标题
plt.show() # 展示图片
输出结果如图:
条形图可以参考这篇文章:python 画条形图(柱状图)_天天向上的专栏-CSDN博客_python柱状图
饼图可以参考这篇文章:
Python数据可视化的例子——饼图(pie)_Fo*(Bi)的博客-CSDN博客_python数据可视化饼图
3. 对比分析——折线图
# 部门之间销售金额比较
import pandas as pd
import matplotlib.pyplot as plt
data=pd.read_excel("./Python数据分析与挖掘实战(第2版)/chapter3/demo/data/dish_sale.xls")
plt.figure(figsize=(8, 4))
plt.plot(data['月份'], data['A部门'], color='green', label='A部门',marker='o')
plt.plot(data['月份'], data['B部门'], color='red', label='B部门',marker='s')
plt.plot(data['月份'], data['C部门'], color='skyblue', label='C部门',marker='x')
plt.legend() # 显示图例
plt.ylabel('销售额(万元)')
plt.show()
结果如下:
关于折线图可以参考Python数据可视化的例子——折线图(line)_Fo*(Bi)的博客-CSDN博客_python数据可视化折线图
4. 统计量分析
import pandas as pdcatering_sale = './Python数据分析与挖掘实战(第2版)/chapter3/demo/data/catering_sale.xls' # 餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列
data = data[(data[u'销量'] > 400)&(data[u'销量'] < 5000)] # 过滤异常数据
statistics = data.describe() # 保存基本统计量statistics.loc['range'] = statistics.loc['max']-statistics.loc['min'] # 极差
statistics.loc['var'] = statistics.loc['std']/statistics.loc['mean'] # 变异系数
statistics.loc['dis'] = statistics.loc['75%']-statistics.loc['25%'] # 四分位数间距print(statistics)
得到结果如下:
关于如何指定索引,可以参考这两篇文章:
Python pandas,index索引,修改索引,复合索引,将某列设为索引_houyanhua1的专栏-CSDN博客_pandas设置列索引
index_col的用法 index_col = None / 0 / False_wencky的博客-CSDN博客_index_col=false
5. 周期性分析
import pandas as pd
import matplotlib.pyplot as pltdf_normal = pd.read_csv("./Python数据分析与挖掘实战(第2版)/chapter3/demo//data/user.csv")
plt.figure(figsize=(8,4))
plt.plot(df_normal["Date"],df_normal["Eletricity"])
plt.xlabel("日期")
plt.ylabel("每日电量")
# 设置x轴刻度间隔
x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.title("正常用户电量趋势")
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.show() # 展示图片
输出结果如下:
关于坐标轴的设置问题可以参考以下两篇文章:
Matplotlib入门-2-坐标轴axis/axes设置 - 知乎
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围_宁宁Fingerstyle的博客-CSDN博客_matplotlib设置坐标轴刻度
6. 贡献度分析
即找到贡献度最高的前80%的产品
import pandas as pd# 初始化参数
dish_profit = './Python数据分析与挖掘实战(第2版)/chapter3/demo/data/catering_dish_profit.xls' # 餐饮菜品盈利数据
data = pd.read_excel(dish_profit, index_col = u'菜品名')
data = data[u'盈利'].copy()
data.sort_values(ascending = False)import matplotlib.pyplot as plt # 导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号plt.figure()
data.plot(kind='bar')
plt.ylabel(u'盈利(元)')
p = 1.0*data.cumsum()/data.sum()
p.plot(color = 'r', secondary_y = True, style = '-o',linewidth = 2)
plt.annotate(format(p[6], '.4%'), xy = (6, p[6]), xytext=(6*0.9, p[6]*0.9), arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) # 添加注释,即85%处的标记。这里包括了指定箭头样式。
plt.ylabel(u'盈利(比例)')
plt.show()
结果如下:
关于sort_values用法,可以参考这篇文章:dataframe排序中sort_values方法的使用---(超级详细)_爱代码的小哥的博客-CSDN博客_dataframe sort_values
7.相关性分析
可以用散点图和散点图矩阵来进行相关性分析
散点图画法:python Matplotlib 系列教程(四)——散点图_xjl271314的博客-CSDN博客_plt散点图
散点图矩阵画法:Python 用 pandas 绘制散点图矩阵 - 赏尔 - 博客园
数据相关性分析:
from __future__ import print_function
import pandas as pdcatering_sale = './Python数据分析与挖掘实战(第2版)/chapter3/demo/data/catering_sale_all.xls' # 餐饮数据,含有其他属性
data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列
print(data.corr(),'\n') # 相关系数矩阵,即给出了任意两款菜式之间的相关系数
结果如下:
print(data.corr()[u'百合酱蒸凤爪'],'\n') # 只显示“百合酱蒸凤爪”与其他菜式的相关系数
结果如下:
print(data[u'百合酱蒸凤爪'].corr(data[u'翡翠蒸香茜饺']))
结果如下:
这篇文章基本只展示了书中的内容,以及汇总了一些我认为写的比较好的文章(侵删),之后的文章还会有更多各种图的画法~
【python数据分析】用python进行数据探索1(含各种数据基础分析方法以及直方图、条形图、折线图等基本画法)相关推荐
- Python数据分析实战(2)——探索2012欧洲杯数据
个人复习总结(jupyter) 练习来源:工作台 - Heywhale.com 1导入必要的库和创建数据 import pandas as pd 路径='D:/数据分析有关数据集/十套练习/exerc ...
- 《Python数据分析与挖掘实战》一3.1 数据质量分析
本节书摘来自华章出版社<Python数据分析与挖掘实战>一书中的第3章,第3.1节,作者 张良均 王路 谭立云 苏剑林,更多章节内容可以访问云栖社区"华章计算机"公众号 ...
- Python 数据分析三剑客之 Pandas(六):GroupBy 数据分裂、应用与合并
CSDN 课程推荐:<迈向数据科学家:带你玩转Python数据分析>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python ...
- Python数据分析小技巧:如何在Pandas中实现数据透视表?
Python数据分析小技巧:如何在Pandas中实现数据透视表? 数据透视表是数据分析中非常有用的工具,可以帮助我们快速了解数据的结构.关联和趋势.在Pandas中,我们可以使用pivot_table ...
- 为什么学习Python数据分析,python数据分析有什么用?
一.首先我们先说说为什么学习Python数据分析 互联网时代,我们每一个人,每天无时无刻都在生产数据,一分钟内,微博上新发的数据量超过10万,b站的视频播放量超过600万-- 这些庞大的数字,意味着什 ...
- python数据可视化(matplotlib条形图、饼图、箱状图、直方图、折线图)(代码)
python数据可视化(matplotlib条形图.饼图.箱状图.直方图.折线图) matplotlib(条形图) 一.简单条形图 1.简单垂直条形图 2.简单水平条形图 二.水平交错条形图 三.垂直 ...
- 数据探索(数据清洗)①—数据质量分析(对数据中的缺失值、异常值和一致性进行分析)
Python介绍. Unix & Linux & Window & Mac 平台安装更新 Python3 及VSCode下Python环境配置配置 python基础知识及数据分 ...
- 4.2数据探索(一) - 数据探索的方法
简介 数据探索是在具有较为良好的样本后,对样本数据进行解释性的分析工作,它是数据挖掘较为前期的部分.数据探索并不需要应用过多的模型算法,相反,它更偏重于定义数据的本质.描述数据的形态特征并解释数据的相 ...
- Axure高保真移动端智能数据监控+用户画像+饼状图+条形图+折线图数据统计+抖音直播app用户数据统计+智慧移动端主播粉丝、评论、播放量大数据统计+套餐购买、续费套餐prd流程
作品介绍:Axure高保真移动端智能数据监控+用户画像+饼状图+条形图+折线图数据统计+直播app用户数据统计+智慧移动端主播粉丝.评论.播放量大数据统计+套餐购买.续费套餐prd流程 原型演示及下载 ...
- Axure经典案例高保真交互下载(数据统计图高保真原型+雷达图+条形图+折线图+web端通用后台管理原型+统计表、统计分析+用户画像分析)
Axure原型作品内容包括:数据统计图高保真原型+雷达图+条形图+折线图+web端通用后台管理原型+统计表.统计分析+用户画像分析+认证监控预警 以下是Axure部分作品图片截图展示,想看交互效果的请 ...
最新文章
- 快手二面:Java 里的 for (;;) 与 while (true),哪个更快?
- Gson源码解析和它的设计模式
- 新雨个人面试经验总结
- Spring Cloud构建微服务架构(六)高可用服务注册中心
- 三同轴连接器_一种毫米波频段微带同轴转换结构
- 计算机专业直接工作简历,2017计算机专业工作简历
- Codeforces Round #114 (Div. 2)
- 使用绑定进行WPF DataGrid格式化的指南
- vue 判断页面加载完成_vue之骨架屏踩坑之路
- Linux---进程的基本概念
- MySQL 刷脏页问题
- 将redis加入到Windows服务开机启动
- 超级硬盘恢复软件真的超好用哦!
- Spring Boot 接入 Dubbo 指导文档
- obs源码分析【二】:录制功能剖析
- SAP ABAP ALV 的一些总结:Custom container 和 Splitter container
- 微信小程序 实现带刻尺度滑块
- Linux环境部署:开启电脑虚拟化
- 1.5.37:雇佣兵
- 搭建harbor私库