Pandas数据处理+Matplotlib绘图案例

利用pandas对数据进行预处理然后再使用matplotlib对处理后的数据进行数据可视化是数据分析中常用的方法。

第一组例子(星巴克咖啡店)

假如我们现在有这样一组数据:星巴克在全球的咖啡店信息,如下图所示。数据来源:starbucks_store_locations

店铺总数排名前10的国家

# coding=utf-8
# 统计店铺数排名前10的国家
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib import font_manager

# 准备工作
font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/wqy/wqy-microhei.ttc")
file_path = "./starbucks_store_worldwide.csv"
df = pd.read_csv(file_path)

# 处理数据
data1 = df.groupby(by="Country").count().sort_values(by="Brand", ascending=False)[:10]["Brand"]
_x = data1.index
_y = data1.values

# 画图
plt.figure(figsize=(10,8), dpi=80)
plt.bar(range(len(_x)), _y, width=0.5)

plt.xticks(range(len(_x)), _x)
plt.xlabel("国家", fontproperties=font)
plt.ylabel("店铺数", fontproperties=font)
plt.title("星巴克咖啡店铺数排行前10(国家)", fontproperties=font, size=20)
plt.show()

结果如图:

中国店铺数排名前20的城市

# coding=utf-8
# 统计中国店铺数排名前20的城市
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib import font_manager

font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/wqy/wqy-microhei.ttc")
file_path = "./starbucks_store_worldwide.csv"
df = pd.read_csv(file_path)

# 处理数据
df = df[df["Country"] == "CN"]
data1 = df.groupby(by="City").count().sort_values(by="Brand", ascending=False)[:20]["Brand"]
_x = list(data1.index)
_y = list(data1.values)

# 画图
plt.figure(figsize=(20,8), dpi=80)

plt.bar(range(len(_x)), _y)
# 添加条形图数值
for xx, yy in zip(range(len(_x)),_y):
    plt.text(xx, yy+5, str(yy), ha='center')

plt.xticks(range(len(_x)), _x, fontproperties=font)
plt.yticks(range(max(_y)+50)[::50])
plt.xlabel("城市", fontproperties=font)
plt.ylabel("店铺数", fontproperties=font)
plt.title("中国星巴克咖啡店铺数排行前20(城市)", fontproperties=font, size=20)

plt.show()

结果如图:

第二组例子(世界排行前10000书籍信息)

假如我们现在有这样一组数据:世界排行前10000书籍信息,如下图所示。数据来源:books

各年份书籍平均评分

#  coding=utf-8

import pandas as pd
from matplotlib import pyplot as plt

file_path = "./books.csv"
pd.set_option('display.max_columns', 100)
df = pd.read_csv(file_path)

# 不同年份书籍的平均评分

# 去除NaN
data1 = df[pd.notnull(df["original_publication_year"])]
#
print(type(data1))
grouped = data1["average_rating"].groupby(by=data1["original_publication_year"]).mean()

print(grouped)

_x = grouped.index
_y = grouped.values

plt.figure(figsize=(20, 8), dpi=80)

plt.plot(range(len(_x)), _y)

plt.xticks(range(len(_x))[::15], _x[::15].astype(int), rotation=45)
plt.grid()
plt.show()

结果如图:

由于公元前的年份书籍较少,每年只有一本,所以数据波动幅度会很大,越往后就会越趋于平稳

911紧急求救电话信息

这个案例不牵扯绘图,但是这个案例中有个很重要的问题就是关于对数据进行遍历的问题。数据来源:Emergency - 911 Calls

假如我们要读取这个数据文件中各类求救电话的数量,应该怎么做呢?我们首先来看一下这个数据文件的基本信息。

# coding=utf-8

import pandas as pd
import numpy as np

file_path = "./911.csv"
pd.set_option('display.max_columns', 100)
df = pd.read_csv(file_path)

print(df.info())

结果如下:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 249737 entries, 0 to 249736
Data columns (total 9 columns):
lat          249737 non-null float64
lng          249737 non-null float64
desc         249737 non-null object
zip          219391 non-null float64
title        249737 non-null object
timeStamp    249737 non-null object
twp          249644 non-null object
addr         249737 non-null object
e            249737 non-null int64
dtypes: float64(3), int64(1), object(5)
memory usage: 17.1+ MB
None

Process finished with exit code 0

可以看到这个数据文件竟然有25万行之多- -

我们再查看他的第一行信息:

print(df.head(1))

结果如下:

         lat        lng                                               desc  0  40.297876 -75.581294  REINDEER CT & DEAD END;  NEW HANOVER; Station ...   

       zip                   title            timeStamp          twp  0  19525.0  EMS: BACK PAINS/INJURY  2015-12-10 17:10:52  NEW HANOVER   

                     addr  e
0  REINDEER CT & DEAD END  1  

Process finished with exit code 0

可以看到类型适合具体事项都归类在了title里面,所以我们第一步首先要将类型和具体事项分隔开:

data1 = df["title"].str.split(": ").tolist()
# 这里我们直接对所得分类做了去重操作
data2 = set([i[0] for i in data1])

下面关键的一步,我们要统计各个分类下的求救电话数量。因为这个数据有25w行,所以如果像我之前的文章中去一行一行的遍历,程序的速度就会变得非常慢。这里我们使用for循环来遍历分类列表,则会快很多。

# 创建全0数组方便下一步的统计
a = pd.DataFrame(np.zeros((df.shape[0], len(data2))), columns=data2, dtype=int)
# 这一步就是将a中与原数据中相同索引行,但title中包含i类型求助信息的那个值置为1
for i in data2:
    a[i][df["title"].str.contains(i)] = 1

a_sum = a.sum(axis=0).sort_values(ascending=False)
print(a_sum)

结果如下:

EMS        124844
Traffic     87465
Fire        37432
dtype: int64

原文地址:https://www.cnblogs.com/dereen/p/pandas_example.html

时间: 2024-08-03 01:53:23

Pandas数据处理+Matplotlib绘图案例的相关文章

【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识

前面几篇文章采用的案例的方法进行介绍的,这篇文章主要介绍Python常用的扩展包,同时结合数据挖掘相关知识介绍该包具体的用法,主要介绍Numpy.Pandas和Matplotlib三个包.目录:        一.Python常用扩展包        二.Numpy科学计算包        三.Pandas数据分析包        四.Matplotlib绘图包 前文推荐:       [Python数据挖掘课程]一.安装Python及爬虫入门介绍       [Python数据挖掘课程]二.K

pandas、matplotlib

import requests,re,pandas from fake_useragent import UserAgent url = 'http://www.laoyuegou.com/x/zh-cn/lol/lol/godrank.html?region=cn&area=1' x='.{1,600}?';y='([一-龥]+)' pattern=re.compile(f'item1">(#\d+){x}server">{y}{x}em>(\d+){x}s

Pandas与Matplotlib基础

pandas是Python中开源的,高性能的用于数据分析的库.其中包含了很多可用的数据结构及功能,各种结构支持相互转换,并且支持读取.保存数据.结合matplotlib库,可以将数据已图表的形式可视化,反映出数据的各项特征. 先借用一张图来描述一下pandas的一些基本使用方法,下面会通过一些实例对这些知识点进行应用. 一.安装pandas库 pandas库不属于Python自带的库,所以需要单独下载,如果已经安装了Python,可以使用pip工具下载pandas: pip install pa

Python3快速入门(十六)——Matplotlib绘图

Python3快速入门(十六)--Matplotlib绘图 一.Matplotlib简介 1.Matplotlib简介 Matplotlib是 Python 2D-绘图领域使用最广泛的套件,可以简易地将数据图形化,并且提供多样化的输出格式.matplotlib有两个接口,一个是状态机层的接口,通过pyplot模块来进行管理:一个是面向对象的接口,通过pylab模块将所有的功能函数全部导入其单独的命名空间内. 2.Matplotlib安装 使用conda安装如下:conda install mat

绘图与可视化--pandas中的绘图函数

matplotlib是一种比较低级的工具,要组装一张图表,你得用它得各种基础组件才行:数据展示(即图表类型:线型图.柱状图.盒型图.散布图.等值线图等).图例.标题.刻度标签以及其它注释型信息. 在pandas中,有行标签.列标签及分组信息,要绘制一张图,需要很多matplotlib代码.pandas有很多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法. 1.1 线型图 Series和DataFrame都有一个用于生成各类图表的plot方法,默认情况下,生成的是线型图.

linux下安装numpy,pandas,scipy,matplotlib,scikit-learn

python在数据科学方面需要用到的库: a.Numpy:科学计算库.提供矩阵运算的库. b.Pandas:数据分析处理库 c.scipy:数值计算库.提供数值积分和常微分方程组求解算法.提供了一个非常广泛的特定函数集合. d.Matplotlib:数据可视化库 e.Scikit-learn:机器学习库 安装顺序如下: 1.pip install numpy2.pip install pandas 3.pip install scipy (sudo apt-get install libatla

matplotlib绘图学习

matplotlib绘图学习 (1)matplotlib安装 下载地址https://pypi.python.org/pypi/matplotlib#downloads 下载windows包matplotlib-2.1.0-cp35-cp35m-win_amd64.whl 安装命令: python -m pip --user matplotlib-2.1.0-cp35-cp35m-win_amd64.whl 检查是否安装成功使用import导入操作,不报错即可 (2)绘制一个简单的折线图 imp

hadoop大数据处理平台与案例

大数据可以说是从搜索引擎诞生之处就有了,我们熟悉的搜索引擎,如百度搜索引擎.360搜索引擎等可以说是大数据技处理技术的最早的也是比较基础的一种应用.大概在2015年大数据都还不是非常火爆,2015年可以说是大数据的一个分水岭.随着互联网技术的快速发展,大数据也随之迎来它的发展高峰期. 整个大数据处理技术的核心基础hadoop.mapreduce.nosql系统,而这三个系统是建立在谷歌提出的大表.分布式文件系统和分布式计算的三大技术构架上,以此来解决海量数据处理的问题.虽然说大数据处理技术最早兴

python2.7安装numpy、pandas、matplotlib库

我装的是python2.7 然后pip的版本是18.1,最近使用pip install **安装包的时候总是会提示 You are using pip version 18.1, however version 19.1.1 is available. 可以在python安装目录的Scripts文件夹下打开powershell,然后通过指令 easy_install.exe pip==19.1.1 更新到提示的pip最新版本 更新成功后,再次查看pip版本,已经是最新的19.1.1了 安装num