7.Pandas可视化
Pandas中集成了Matplotlib中的基础组件,绘图便捷。
线形图
线形图一般用于描述两组数据之间的趋势。Pandas库中的Series和DataFrame中都有绘制各类图表的plot方法,默认绘制线形图。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
#线形图Series
obj = pd.Series(np.random.normal(size=10))
obj.plot()
# DataFrame
df = pd.DataFrame({'normal':np.random.normal(size=50),'gamma':np.random.gamma(1, size=50)})
df.plot()
柱状图
柱状图一般用来描述各类别之间的关系。在plot函数中加入参数kind='bar'
,如果类别较多,可以绘制水平柱状图(kind='barh'
)。
在DataFrame中绘制柱状图,对于DataFrame数据而言,每一行的值会成为一组。
# 柱状图 kind='bar'/'barh' 类别多少 rot:标签角度
stu = {'name':['孙尚香','李白','韩信','马克','妲己'],
'sex':['female','male','male','male','female'],
'age':[19,20,22,21,25]
}
df = pd.DataFrame(stu)
print(df['sex'].value_counts())
print(df['sex'].value_counts().plot(kind='bar' ,rot=30))
DataFrame数据对象的柱状图:观察图很显然那个图和数据直接是有很明显的对应关系的,一行是一组图。
# 直接DataFrame作图 类别多 水平柱状图
df = pd.DataFrame(np.random.randint(1,100, size=(4,4)), index=['a','b','c','d'], columns=['I1','I2','I3','I4'])
df.plot(kind='barh')
直方图和密度图
直方图用于频率分布,Y轴为数值或者比率。绘制直方图可以先大致观察数据的大致分布规律。Pandas中的直方图有由hist方法绘制。
核密度估计是对真实密度的估计,其过程是将数据的分布近似为一组核(如正态分布)。通过plot的kind='kde'
进行绘制。
# 直方图【hist bins参数是y轴的值 grid是否有表格】
obj1 = pd.Series(np.random.normal(size=80))
obj1.hist(bins=15, grid=False)
#密度图【kind='kde'】
obj1.plot(kind='kde')
散点图
散点图主要用来表示数据之间的规律,plot(kind='scatter')
#kind = 'scatter' 不能是Sreries 还得给定x与y
df1 = pd.DataFrame(np.arange(10), columns=['A'])
df1['B'] = 2*df1['A']+2
print(df1)
df1.plot(kind='scatter',x='A',y='B')