pandas可视化
pandas库中集成了matplotlib中的基础组件,可以利用pandas绘制基本的图形。
1.线形图
线形图通常用于秒回两组数据之间的趋势。pandas库中的Series和DataFrame中都有绘制各类图表的plot方法,默认情况为线形图。
例:创建一个Series对象,画线形图。
import numpy as np
from pandas import Series,DataFrame
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
%matplotlib inline #魔法函数,使用函数绘制的图片会直接显示
s=Series(np.random.normal(size=10))
print(s)
s.plot()
2.柱状图
柱状图通常描绘各类别之间的关系。
2.1常见柱状图
创建DataFrame数据的售卖的饮品信息
import numpy as np
from pandas import Series,DataFrame
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
from IPython.display import display
%matplotlib inline
data={
'奶茶品类':['巧克力奶茶','可可奶茶','布丁奶茶','红豆奶茶','皇家奶茶','贵妃奶茶'],
'数量':[20,25,40,26,37,10]
}
df=DataFrame(data)
display(df)
绘制柱状图显示出该信息
import numpy as np
import seaborn as sn
from pandas import Series,DataFrame
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
from IPython.display import display
%matplotlib inline
data={
'奶茶品类':['巧克力奶茶','可可奶茶','布丁奶茶','红豆奶茶','皇家奶茶','贵妃奶茶'],
'数量':[20,25,40,26,37,10]
}
df=DataFrame(data)
display(df)
plt.title('奶茶销量')
sn.barplot(data['奶茶品类'],data['数量'])
plt.show()
很显然中文字体无法显示,通过查询资料得以解决。
font={
'family':'kaiti',#自定义字体,这里是楷体
'weight':'bold',
}
width=0.3
matplotlib.rc('font',**font)
import numpy as np
import seaborn as sn
from pandas import Series,DataFrame
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
from IPython.display import display
%matplotlib inline
data={
'奶茶品类':['巧克力奶茶','可可奶茶','布丁奶茶','红豆奶茶','皇家奶茶','贵妃奶茶'],
'数量':[20,25,40,26,37,10]
}
df=DataFrame(data)
display(df)
font={
'family':'kaiti',
'weight':'bold',
}
width=0.3
matplotlib.rc('font',**font)
plt.title('奶茶销量')
sn.barplot(data['奶茶品类'],data['数量'])
plt.show()
2.2水平柱状图
创建DataFrame数据
import pandas as pd
import matplotlib as plt
from IPython.display import display
import numpy as np
import random
%matplotlib inline
data=DataFrame(np.random.randint(0,100,size=(3,3)),
index=('one','tow','three'),
columns=['A','B','C'])
display(data)
画水平柱状图
import pandas as pd
import matplotlib as plt
from IPython.display import display
import numpy as np
import random
%matplotlib inline
data=DataFrame(np.random.randint(0,100,size=(3,3)),
index=('one','tow','three'),
columns=['A','B','C'])
display(data)
data.plot(kind='barh')#barh水平直方图
2.3堆积柱状图
import pandas as pd
import matplotlib as plt
from IPython.display import display
import numpy as np
import random
%matplotlib inline
data=DataFrame(np.random.randint(0,100,size=(3,3)),
index=('one','tow','three'),
columns=['A','B','C'])
display(data)
data.plot(kind='barh',stacked=True,alpha=0.5)#alpha设置颜色透明度
3.直方图
直方图用于频率分布,y轴可为数值或比率,统计中使用直方图可以看出其大概分布规律,用hist方法绘制直方图。
import pandas as pd
import matplotlib as plt
import numpy as np
import random
%matplotlib inline
data=Series(np.random.normal(size=100))
data.hist(bins=20,grid=False)
很显然负号无法显示,通过查阅资料得到以下修改方式,
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
这里有查到了显示中文的方式,也一并记录下来。
plt.rcParams['font.sans-serif'] = ['SimHei'] #显示中文
加上上述代码之后运行结果
import pandas as pd
import matplotlib as plt
import numpy as np
import random
%matplotlib inline
data=Series(np.random.normal(size=100))
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
data.hist(bins=20,grid=False)
可以看出负号已经显示。
4.密度图
密度图是将数据的分布近似为正态分布,通过plot函数的kind='kde’绘制
import pandas as pd
import matplotlib as plt
import numpy as np
import random
%matplotlib inline
data=Series(np.random.normal(size=100))
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
data.plot(kind='kde')
可以通过设置grid参数在图表中添加网格,bins参数是将值分为多少段,默认为10
5.散点图
散点图主要用来表现数据之间的规律
创建dataFrame数据
data=DataFrame({
'X':[0,2,3,4,5,6,7,8,9,10],
'Y':[4,5,2,8,4,56,25,24,10,14]
})
完整代码
import pandas as pd
import matplotlib as plt
from IPython.display import display
%matplotlib inline
data=DataFrame({
'X':[0,2,3,4,5,6,7,8,9,10],
'Y':[4,5,2,8,4,56,25,24,10,14]
})
display(data)
画散点图
import pandas as pd
import matplotlib as plt
from IPython.display import display
%matplotlib inline
data=DataFrame({
'X':[0,2,3,4,5,6,7,8,9,10],
'Y':[4,5,2,8,4,56,25,24,10,14]
})
display(data)
data.plot(kind='scatter',x='X',y='Y')