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 需求是需要统计部门礼品数量,自己简单绘制了个表格,如下: 大意是,每个部门 ...
随机推荐
- PriorityQueue 是线性结构吗?90%的人都搞错了!
文章首发于「陈树义」公众号及个人博客 shuyi.tech 其实这个问题的完整描述是:Java 中的 PriorityQueue 实现,其数据的逻辑结构是线性结构吗?其数据的物理结构又是什么? 估计很 ...
- 上万字详解Spark Core(建议收藏)
先来一个问题,也是面试中常问的: Spark为什么会流行? 原因1:优秀的数据模型和丰富计算抽象 Spark 产生之前,已经有MapReduce这类非常成熟的计算系统存在了,并提供了高层次的API(m ...
- Linux入门视频笔记三(常用工具集)
一.全局变量(Linux中的全局变量指在整个系统中都能用的变量) 1.USER:当前登录系统的用户的用户名 2.HOME:当前用户的主目录 cd $HOME 或 cd ~可以进入用户主目录 3.PAT ...
- vue 给一个值重置初始值
查了下资料很多都是如下: 1. this.$options.data() 这个可以获取原始的data值,this.$data 获取当前状态下的data,拷贝重新赋值一下就行了. 1 Object.as ...
- 推荐模型NeuralCF:原理介绍与TensorFlow2.0实现
1. 简介 NCF是协同过滤在神经网络上的实现--神经网络协同过滤.由新加坡国立大学与2017年提出. 我们知道,在协同过滤的基础上发展来的矩阵分解取得了巨大的成就,但是矩阵分解得到低维隐向量求内积是 ...
- 真会C#微信小程序的习题数据JSON文件下载链接
完全没有精力去维护了,所以小程序停掉,集中精力做一件事. 链接: https://pan.baidu.com/s/1xL45KxDzR5oEQM6nwBA5rw 提取码: qv6n
- 【DB宝45】MySQL高可用之MGR+Consul架构部署
目录 一.MGR+Consul架构简介 二.搭建MGR 2.1.申请3台MGR机器 2.2.3台主机安装MySQL环境 2.3.修改MySQL参数 2.4.重启MySQL环境 2.5.安装MGR插件( ...
- 第28 章 : 理解容器运行时接口 CRI
理解容器运行时接口 CRI CRI 是 Kubernetes 体系中跟容器打交道的一个非常重要的部分.本文将主要分享以下三方面的内容: CRI 介绍 CRI 实现 相关工具 CRI 介绍 在 CRI ...
- 201871030106-陈鑫莲 实验二 个人项目-《D{0-1} KP 问题》项目报告
项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 1.掌握软件项目个人开发流程2.掌握Github发布软件项目的操作方法 这个作业在哪些方面帮助我实现学习目标 1. ...
- 2020-BUAA OO-面向对象设计与构造-HW11中对ageVar采用缓存优化的等价性证明(包括溢出情况)
HW11中对ageVar采用缓存优化的等价性证明(包括溢出情况) 概要 我们知道,第三次作业里age上限变为2000,而如果缓存年龄的平方和,2000*2000*800 > 2147483647 ...