python数据可视化之pandas基础图表(一)

pandas可以做的不仅仅是加载和转换数据,它还可以可视化数据。比起一大堆的matplotlib代码,使用pandas内置的plot 函数绘图更简洁。
下面通过简单的例子掌握pandas基本的绘图方法。

了解数据

数据源来自kaggle-葡萄酒杂志评论。

import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
# 葡萄酒杂志评论数据
reviews = pd.read_csv("kaggle/winemag-data_first150k.csv", index_col=0)
head = reviews.head(3)
image.png
柱形图

柱形图可以说是最简单的数据可视化。通过柱子来表现数据的高度,进而比较不同数据之间的差异,一眼可以看到数据量的大小对比。在本例子中展现top10葡萄酒产量的省份对比

reviews['province'].value_counts().head(10).plot.bar()
产量对比.png

从上图中可以看出California的产量远远高于世界其他省份的产量,我们可能会问,California葡萄酒占总葡萄酒的百分比是多少?这个柱形图告诉我们绝对值,但知道相对比例更有用。

(reviews['province'].value_counts().head(10)/len(reviews)).plot.bar()
占比.png

从上图可以得知California出产的葡萄酒几乎占葡萄酒杂志评论的三分之一。
柱形图非常灵活:高度可以表示任何东西,只要它是一个数字。每个栏可以代表任何东西,只要它是一个分类。
上例的中省份分类是一个定类数据(没有内在固有大小或高低顺序),还有一种分类数据是定序数据,它相对于定类数据类型来说存在一种程度有序现象,例如下例中葡萄酒不同评分的评论数量。

reviews['points'].value_counts().sort_index().plot.bar()
不同评分的评论数.png

从上图可看到,每个葡萄酒的总分都在80到100分之间。有20个分数值类别,柱状图刚好可以完全展示这些值。如果评分是0-100呢?恐怕无法完全展示每个类别的情况,这时,我们需要使用折线图。

折线图
reviews['points'].value_counts().sort_index().plot.line()
不同评分的评论数趋势.png
面积图

当只绘制一个变量时,面积图和折线图之间的区别主要是可视化的。在这种情况下,它们可以互换使用。

reviews['points'].value_counts().sort_index().plot.area()
面积图.png
直方图

直方图是用一系列等宽不等高的长方形来绘制,宽度表示数据的范围间隔,高度表示频数或者频率。
查看葡萄酒价格分布

reviews['price'].plot.hist()
价格分布1.png

从上图看价格主要分布在0~200,由于高位价格偏差,导致价格区间过大,看不出问题。

len(reviews[reviews['price'] > 200])/len(reviews)

通过计算,发现价格在200以上的占比只有 0.005,可以忽略,处理一下数据偏差,重新查看price<200时的价格数量分布

reviews[reviews['price'] < 200]['price'].plot.hist()
价格分布2.png
总结
柱形图 折线图 面积图 直方图
df.plot.bar() df.plot.line() df.plot.area() df.plot.hist()
适合展示少量的定类数据。 适用于有序数据和区间数据 同折线图 适合展示区间数据

相关资料
https://www.kaggle.com/residentmario/univariate-plotting-with-pandas

你可能感兴趣的:(python数据可视化之pandas基础图表(一))