Python | Pandas数据清洗与画图
准备数据
2016年北京PM2.5数据集
数据源说明:美国驻华使馆的空气质量检测数据
数据清洗
1. 导入包
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
from datetime import datetime
2. 导入数据
用Pandas库的read_csv()导入csv文件
# 导入2016年北京PM2.5数据集
df = pd.read_csv("Beijing_2016_HourlyPM25_created20170201.csv")
df.head()

3. 删除对数据分析没有用的列
用Pandas库的drop()删除行或列,axis=0 表示行,axis=1 表示列。
df.drop(["Unit","Duration","QC Name"], axis = 1, inplace=True)
df.head()

4. 查看数据的简要信息
用Pandas库的describe()来查看数据的简要信息,包括了计数,平均值,标准差,最小值,最大值等。
df.describe()

5. 删除指定的数据
通过数据的简要信息发现PM2.5的值存在负数,而PM2.5的值不能为负数。
我们来查看一下PM2.5的值为负数的数量。
count = 0
print('PM2.5的值为负数的数量:')
for i in range(df.shape[0]):
if(df.at[i,'Value']<0):
count = count + 1
print(count)

PM2.5的值为负数的数据有45条,而整个数据集的数据有8000多条,删除这45条数据对数据分析没有影响,那怎么删除这45条没用的数据呢?
我们要把PM2.5的值为负数的数据变成空值(NaN),再用Pandas库的dropna()删除空值。
# 把负数的值变成空值(NaN)
df.loc[df.Value<0,'Value']=np.nan
# 删除有空值的数据
df.dropna(inplace=True)
# 此时已经没有负数的PM2.5值了
df.describe()

6. 查看是否有空值
用Pandas库的isnull()来查看是否有空值,value_counts()用来统计个数。
df.isnull().value_counts()

7. 查看是否有重复行
用Pandas库的duplicated()来查看是否有重复行。
df.duplicated()

8. 保存数据清洗后的文件
用Pandas库的to_csv()保存csv文件。
df.to_csv('Beijing_2016_PM25.csv',encoding='utf-8')
画图
1. 导入数据清洗后的文件,统计北京2016年12个月PM2.5的平均值
我们用条形图来表示:
PM25 = pd.read_csv("Beijing_2016_PM25.csv")
month_avg = PM25.groupby(['Month'])['Value'].mean()
PM25_month = pd.DataFrame({'PM2.5平均值':month_avg}, index = np.arange(1,13))
PM25_month.plot(kind='bar',title='北京2016年12个月PM2.5的平均值')
plt.xticks(rotation=360)
plt.show()

2. 绘制某一天的PM2.5折线图
在我们使用Date时发现,Date格式并非datetime格式,而是object格式。
PM25.Date.head()

所以我们要把Date的格式转为datetime。
PM25['Date'] = pd.to_datetime(PM25['Date'])
PM25['Date'].head()

转为datetime格式后,再把Date列设置为列索引。
PM25 = PM25.set_index('Date')
PM25.index

上面的处理完后,就正式进入绘图阶段了。
plt.rcParams['figure.figsize'] = (10.0, 6.0) # 设置画布尺寸
s=pd.Series(PM25['2016-12-10'].Value)#查看2016-12-10的记录
s.plot(kind='line',label='2016-12-10')
plt.legend(loc='upper left') # loc:图例位置参数
plt.xticks(s.index,range(0,24))
plt.xlabel('时间(小时)')
plt.ylabel('PM2.5值')
plt.grid()
plt.show()

Python | Pandas数据清洗与画图的更多相关文章
- [数据可视化之一]Pandas单变量画图
Pandas单变量画图 Bar Chat Line Chart Area Chart Histogram df.plot.bar() df.plot.line() df.plot.area() df. ...
- Python pandas快速入门
Python pandas快速入门2017年03月14日 17:17:52 青盏 阅读数:14292 标签: python numpy 数据分析 更多 个人分类: machine learning 来 ...
- Python pandas & numpy 笔记
记性不好,多记录些常用的东西,真·持续更新中::先列出一些常用的网址: 参考了的 莫烦python pandas DOC numpy DOC matplotlib 常用 习惯上我们如此导入: impo ...
- Python Pandas操作Excel
Python Pandas操作Excel 前情提要 ☟ 本章使用的 Python3.6 Pandas==0.25.3 项目中需要用到excel的文件字段太多 考虑到后续字段命名的变动以及中文/英文/日 ...
- python & pandas链接mysql数据库
Python&pandas与mysql连接 1.python 与mysql 连接及操作,直接上代码,简单直接高效: import MySQLdb try: conn = MySQLdb.con ...
- Python pandas ERROR 2006 (HY000): MySQL server has gone away
之前在做python pandas大数据分析的时候,在将分析后的数据存入mysql的时候报ERROR 2006 (HY000): MySQL server has gone away 原因分析:在对百 ...
- Python+Pandas 读取Oracle数据库
Python+Pandas 读取Oracle数据库 import pandas as pd from sqlalchemy import create_engine import cx_Oracle ...
- 使用python中的matplotlib 画图,show后关闭窗口,继续运行命令
使用python中的matplotlib 画图,show后关闭窗口,继续运行命令 在用python中的matplotlib 画图时,show()函数总是要放在最后,且它阻止命令继续往下运行,直到1.0 ...
- 看到篇博文,用python pandas改写了下
看到篇博文,https://blog.csdn.net/young2415/article/details/82795688 需求是需要统计部门礼品数量,自己简单绘制了个表格,如下: 大意是,每个部门 ...
随机推荐
- 使用Webpack构建多页面程序
使用webpack搭建单页面程序十分常见,但在实际开发中我们可能还会有开发多页面程序的需求,因此我研究了一下如何使用webpack搭建多页面程序. 原理 将每个页面所在的文件夹都看作是一个单独的单页面 ...
- 【LiteOS】LiteOS任务篇-源码分析-创建任务函数
目录 前言 链接 参考 笔录草稿 部分源码分析 源码分析 LOS_TaskCreate函数 LOS_TaskCreateOnly函数 宏 OS_TCB_FROM_PENDLIST 和 宏 LOS_DL ...
- KubeEdge边缘自治设计原理
这一篇内容主要是KubeEdge中边缘节点组件EdgeCore的原理介绍. KubeEdge架构-EdgeCore 上图中深蓝色的都是kubeedg自己实现的组件,亮蓝色是k8s社区原生组件.这篇主要 ...
- 文件查找工具 find 详解(附:生产示例)
1. 文件查找:在文件系统上查找符合条件的文件 命令 解释 which 查看可执行文件的位置,只能寻找执行文件,并在PATH变量里面寻找 whereis 查看文件的位置:只能查二进制文件,说明文档,源 ...
- Echarts概述
1. Echarts概述 ECharts是百度开源的纯 Javascript 图表库,目前开源可以与highcharts相匹敌的一个图表库.支持折线图(区域图).柱状图(条状图).散点图(气泡图).K ...
- ionic3 清除navpush的堆栈 (android真机返回键bug)
清除navpush的堆栈可以使用 方法一:ionic3文档 this.navCtrl.popToRoot(); //直接返回根组件 方法二: push 后再删除之前页面即可. this.navCtrl ...
- openGL常见函数意义
最近在课程上在学习计算机图像,对于突然冒出来的好多glut库里的函数感觉很难招架.把示例代码一行行百度下来,总算是差不多理解了大概的意思,在这里分享一下绘制图像需要的基础的函数. 1. 配置环境 对于 ...
- Unity2D项目-平台、解谜、战斗! 1.3移动组件
各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊. 在这一篇中,我们将会自顶向下地讨论本2D游戏中主角不可或缺的一个功能--移动控制. 首先我们简单分析一下2D游戏中主角与移动相 ...
- Unity2D项目-平台、解谜、战斗! 0.1 序言:团队、项目提出、初步设计、剧情大纲
各位看官老爷们,这里是RuaiRuai工作室(以下简称RR社),一个做单机游戏的兴趣作坊. 本文跟大家聊一下社团内第一个游戏项目.算是从萌新项目组长的角度,从第一个里程碑的结点处,往前看总结一下项目之 ...
- 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之文件配置-08
自动化kolla-ansible部署ubuntu20.04+openstack-victoria之文件配置-08 欢迎加QQ群:1026880196 进行交流学习 文件配置 #controller ...