python pandas画图(超级简单的数据可视化作图)
python pandas画图(超级简单的数据可视化作图)1.2 我最近一直介绍各种各样的python的数据可视化作图,有静态的,也有动态交互式的,有个条友说他曾经折腾来折腾去还是回到matplotlib,我的介绍技术文章,尽量通俗易懂,我的代码拿来就可以使用,省去大家很多时间。======1.1.2 它易于使用,文档非常棒,而且功能强大。1.1.3 是python的一个利器,一个非常强大的数据分析工具包。1.1.4 pandas也集成了数据可视化的功能,其数据可视化已经可以满足我们大部分的要求了,也就省下了我们很多自己使用 如 matplotlib 来数据可视化的工作。
1 说明:
=====
1.1 Pandas
1.1.1 已经成为最受欢迎的数据科学库之一。
1.1.2 它易于使用,文档非常棒,而且功能强大。
1.1.3 是python的一个利器,一个非常强大的数据分析工具包。
1.1.4 pandas也集成了数据可视化的功能,其数据可视化已经可以满足我们大部分的要求了,也就省下了我们很多自己使用 如 matplotlib 来数据可视化的工作。
======
1.2 我最近一直介绍各种各样的python的数据可视化作图,有静态的,也有动态交互式的,有个条友说他曾经折腾来折腾去还是回到matplotlib,我的介绍技术文章,尽量通俗易懂,我的代码拿来就可以使用,省去大家很多时间。
1.3 今天,就来介绍一个更简单的python的数据可视化静态作图,就是pandas的内置plot法(其实就是内置了matplotlib)。
1.4 顺带复习python和pandas等的基础知识,代码注释里有详细讲解,注意这是讲解学习版。
python数据可视化:由繁入简
2 准备:
=====
2.1 官网:
https://pandas.pydata.org/
https://www.yiibai.com/pandas/python_pandas_visualization.html
2.2 安装:
pip install pandas
#推荐国内源安装,本机如下
sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple pandas
2.3 查看版本:
import pandas
pandas.__version__
2.4 环境:
华为笔记本电脑、深度deepin-linux操作系统、python3.8和微软vscode编辑器。
2.5 资料来源:
2.5.1 代码:
import pandas as pd
help(pd.DataFrame.plot)
2.5.2 图:
2.5.3 对英文的文档进行代码提炼、修改、注释,便于大家拿来就能使用。
3 pandas内置plot作图:
================
3.1 通常使用 pandas 进行下列的图形的快速绘图:
=======================
‘line’
‘bar’ or ‘barh’ for bar plots
‘hist’ for histogram
‘box’ for boxplot
‘area’ for area plots
‘scatter’ for scatter plots
‘pie’ for pie plots
=====================
3.2 line折线图:
3.2.1 代码:
#导出模块
import pandas as pd
#数据源,2组数据
d = {'col1': [2 1 3 5 3]
'col2': [3 4 1 5 2]
}
#df = pd.DataFrame(data=d) #默认x轴坐标轴的标签
#指定x坐标轴的标签:index定义
df = pd.DataFrame(data=d index=['a' 'b' 'c' 'd' 'e'])
#只显示col1的这条折线line
#df = pd.DataFrame(data=d index=['a' 'b' 'c' 'd' 'e'] columns=['col1'])
#df.plot() #默认是plot.line
df.plot.line()
#下面这么放,是区别平时我们看到以matplotlib作图为主的代码不同
#虽然pandas的内置plot是matplotlib,但是仍需要下面2种方法使其图片显示出来
#方法一
#import matplotlib.pyplot as plt
#plt.show()
#方法二
import matplotlib.pylab as pl
pl.show()
3.2.2 图:
3.3 bar柱状图:垂直柱状图
3.3.1 代码:
#导出模块
import pandas as pd
#数据源,2组数据
d = {'col1': [2 1 3 5 3]
'col2': [3 4 1 5 2]
}
#指定x坐标轴的标签:index定义
df = pd.DataFrame(data=d index=['dog' 'pig' 'cow' 'sheep' 'horse'] )
#默认显示2组
#df = pd.DataFrame(data=d columns=['col1' 'col2'])
#df = pd.DataFrame(data=d ) #等同上面
#subplots=True,分子图显示,2组就分2个子图
#df.plot.bar(subplots=True) #比matplotlib超级简单
df.plot.bar() #默认是一张图显示2组
#在这样放一次
import matplotlib.pyplot as plt
plt.show()
3.3.2 图:
bar==默认是vertical bar plot==垂直柱状图
3.4 barh水平柱状图:
3.4.1 代码:
#导出模块
import pandas as pd
import matplotlib.pyplot as plt
'''
#数据源:方法一
d = {'a': [2 1 3 5 3]
'b': [3 4 1 5 2]
'c': [1 2 4 2 2]
}
#指定x坐标轴的标签:index定义
df = pd.DataFrame(data=d index=['dog' 'pig' 'cow' 'sheep' 'horse'])
'''
#方法二:
df = pd.DataFrame(
{'a': [2 1 3 5 3]
'b': [3 4 1 5 2]
'c': [1 2 4 2 2]
}
index=['dog' 'pig' 'cow' 'sheep' 'horse'])
#启动pandas的df的plot的barh图
df.plot.barh() #barh==horizontal bar plot==水平柱状图
#图片展示
plt.show()
3.4.2 图:
3.5 box箱式图:
3.5.1 代码:
#导出模块
import pandas as pd
import matplotlib.pyplot as plt
#方法一
d= {'a': [2 1 3 5 3 3 4 1 5 2]
'b': [3 4 1 5 2 1 2 4 2 2]
'c': [1 2 4 2 2 3 1 5 3 4]
'd': [3 1 5 3 4 2 1 3 5 3] }
df=pd.DataFrame(data=d )
'''
#建议数据大于4组10列
df = pd.DataFrame(
{'a': [2 1 3 5 3 3 4 1 5 2]
'b': [3 4 1 5 2 1 2 4 2 2]
'c': [1 2 4 2 2 3 1 5 3 4]
'd': [3 1 5 3 4 2 1 3 5 3]
#} columns=list('abcd')) #注意已经有abcd了,所以columns=list('abcd')不需要
}) #等同于上面
'''
#ax = df.plot.box()
df.plot.box() #等于上面,box=箱式图
#图片展示
plt.show()
3.5.2 图:
3.6 stackedbar垂直堆砌柱状图:
3.6.1 代码:
#导出模块
import pandas as pd
import matplotlib.pyplot as plt
#数据
d= {'a': [2 1 3 5 3 3 4 1 5 2]
'b': [3 4 1 5 2 1 2 4 2 2]
'c': [1 2 4 2 2 3 1 5 3 4]
'd': [3 1 5 3 4 2 1 3 5 3] }
#注意:index是x坐标轴的标签,注意list('ABCDEFGHIJ')=['A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J']
'''
#插入知识点:复习一下
aaa=list('ABCDEFGHIJ')
df=pd.DataFrame(data=d index=aaa)
#print(aaa)
#['A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J']
'''
df=pd.DataFrame(data=d index=list('ABCDEFGHIJ')) #等同于上面
#注意bar是柱状图,括号里定义stacked=True就是垂直堆砌柱状图
#默认stacked=False,不是堆砌柱状图 图标的标题名
df.plot.bar(stacked=True title='pd_plot_stacked_bar')
#图片展示
plt.show()
3.6.2 图:
===高级一点===
4 area面积图:
==========
4.1 代码:
#导出模块
import pandas as pd
import matplotlib.pyplot as plt
#数据
df = pd.DataFrame({
'sales': [3 2 3 9 10 6]
'signups': [5 5 6 12 14 13]
'visits': [20 42 28 62 81 50]
}
#index=pd.date_range(start='2018/01/01' end='2018/07/01' freq='M' ) #这样报错,报中文设置错误
#index=pd.date_range(start='1M' end='7M' freq='M' ) #这样报错
index=['1M' '2M' '3M' '4M' '5M' '6M'] #本机这样没有报错
#index=['1月' '2M' '3M' '4M' '5M' '6M'] #本机这样没有报错
)
#ax = df.plot.area()
#df.plot.area()
df.plot.area(stacked=True ) #默认是True
#df.plot.area(stacked=False) #如果数据差别比较大,建议不要堆砌
plt.show()
4.2 图:
4.3 解决中文办法,代码,推荐这种办法,自己解决中文字体问题:
#导出模块
import pandas as pd
import matplotlib.pyplot as plt
#导出通用字体设置
from matplotlib import font_manager
#定义引出字体模块、位置、大小 字体在根目录下,华文仿宋.ttf自己下载的中文字体
my_font = font_manager.FontProperties(fname="hwfs.ttf" size=10)
#定义x坐标轴的文字列表,python3中不要求加u,加u也没事
xtick_labels=[u'1月' '2月' '3月' '4月' '5月' '6月']
df = pd.DataFrame({
'sales': [3 2 3 9 10 6]
'signups': [5 5 6 12 14 13]
'visits': [20 42 28 62 81 50]
}
#index=pd.date_range(start='2018/01/01' end='2018/07/01' freq='M' ) #这样报错,报中文设置错误
index=xtick_labels
)
df.plot.area()
#默认的x坐标刻度位置列表
x=[1 2 3 4 5 6]
plt.xticks(x xtick_labels fontproperties=my_font)
plt.show()
4.4 图:解决中文字体,则需要调用matplotlib的作图法,调动函数
4.5 官方代码、效果图和问题分析:
#index=pd.date_range(start='2018/01/01' end='2018/07/01' freq='M' )
#print(index)
'''
DatetimeIndex(['2018-01-31' '2018-02-28' '2018-03-31' '2018-04-30'
'2018-05-31' '2018-06-30']
dtype='datetime64[ns]' freq='M')
'''
#报错原因,我暂时无法解决
'''
/usr/local/python3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 26376 missing from current font.
font.set_text(s 0.0 flags=flags)
/usr/local/python3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 26376 missing from current font.
font.set_text(s 0 flags=flags)
'''
5 饼状图pie:
========
5.1 代码:
#导出模块
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(
{'mass': [0.330 4.87 5.97]
'radius': [2439.7 6051.8 6378.1]
}
index=['Mercury' 'Venus' 'Earth']
)
#y='mass' 相当于饼图的标题名,位于y轴
#plot = df.plot.pie(y='mass' figsize=(5 5))
#df.plot.pie(y='mass' figsize=(5 5)) #只显示mass的饼状图
df.plot.pie(subplots=True figsize=(5 5)) #显示mass和radius的两个子图的饼状图
#subplots=True,默认是False
plt.show()
5.2 图:
6 散点图Scatter:
============
6.1 代码:
#导出模块
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(
[[5.1 3.5 0] [4.9 3.0 0] [7.0 3.2 1] [6.4 3.2 1] [5.9 3.0 2]]
columns=['length' 'width' 'species']
)
#经典Scatter散点图
#只能显示2组数据,将x和y轴的2组5份数据进行类似x和y的作图
ax1 = df.plot.scatter(x='length' y='width' c='red')
'''
#高级散点图,省略,仅仅给代码
ax2 = df.plot.scatter(x='length'
y='width'
c='species'
colormap='viridis')
'''
plt.show()
6.2 图:
7 小结:
静态图其实也很重要,在平时的绝大多数人的多数工作中,基本上都是用到静态图,适合学生、老师、工作人员,所以今天重点将pandas的基本绘图法,超级简单,比matplotlib还简单。
其实就是pandas内置matplotlib,调出作图。
===自己整理并分享出来===
喜欢的就点赞、评论、关注、转发和收藏。