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 需求是需要统计部门礼品数量,自己简单绘制了个表格,如下: 大意是,每个部门 ...
随机推荐
- ASP.NET Core与Redis搭建一个简易分布式缓存
本文主要介绍了缓存的概念,以及如何在服务器内存中存储内容.今天的目标是利用IDistributedCache来做一些分布式缓存,这样我们就可以横向扩展我们的web应用程序. 在本教程中,我将使用Re ...
- P1426 小鱼会有危险吗(JAVA语言)
题目描述 有一次,小鱼要从A处沿直线往右边游,小鱼第一秒可以游7米,从第二秒开始每秒游的距离只有前一秒的98%.有个极其邪恶的猎人在距离A处右边s米的地方,安装了一个隐蔽的探测器,探测器左右x米之内是 ...
- C语言宏的使用
使用条件宏进行条件编译 譬如,对于同一份代码,我想编译出两个不同的版本,在其中一个版本中去掉某一部分功能, 这时可以通过条件宏判断是否编译,例: 如果不使用条件宏进行控制,想编译两个不同版本的程序,就 ...
- Benjio0-Curriculum Learning 2009
Curriculum Learning 2009 核心思想: 相比于随机选取训练样本对模型进行训练,使用由易到难的样本(更加复杂,包含更多信息)训练模型可以取得更好的训练效果. 由于这种训练模式类似于 ...
- Mybatis底层源码执行流程
1.通过类加载器,加载了config.xml文件 2.通过SqlSessionFactoryBuilder.build(resource)这个方法进行了config.xml的解析,解析为Configu ...
- SpringBoot-08 SpringSecurity
SpringBoot-08 SpringSecurity 创建了一个新项目,创建时选择导入starter-web 1.环境搭建 1.1 导入thymeleaf <dependency> & ...
- 学习笔记-vue.js获取file文件数据
在vue中file不能像其他input一样使用 v-model 双向数据绑定,因为文件选择是只读,只能用onchange监控值得变化. 所有需要使用v-on:change去监控. 例1: <in ...
- 一文带你剖析LiteOS互斥锁Mutex源代码
摘要:多任务环境下会存在多个任务访问同一公共资源的场景,而有些公共资源是非共享的临界资源,只能被独占使用.LiteOS使用互斥锁来避免这种冲突,互斥锁是一种特殊的二值性信号量,用于实现对临界资源的独占 ...
- 【linux】驱动-11-gpio子系统
目录 前言 11. gpio子系统 11.1 操作步骤 11.1.1 新版 API 操作流程 11.1.2 旧版 API 操作流程 11.2 设备树中使用gpio子系统 11.3 GPIO 子系统 A ...
- 万字长文,带你彻底理解EF Core5的运行机制,让你成为团队中的EF Core专家
在EF Core 5中,有很多方式可以窥察工作流程中发生的事情,并与该信息进行交互.这些功能点包括日志记录,拦截,事件处理程序和一些超酷的最新出现的调试功能.EF团队甚至从Entity Framewo ...