pandas 知识点补充:绘图plot

1 plot介绍

        使用DataFrame的plot方法绘制图像会按照数据的每一列绘制一条曲线,默认按照列columns的名称在适当的位置展示图例,比matplotlib绘制节省时间,且DataFrame格式的数据更规范,方便向量化及计算。

DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, 
                sharex=None, sharey=False, layout=None, figsize=None, 
                use_index=True, title=None, grid=None, legend=True, 
                style=None, logx=False, logy=False, loglog=False, 
                xticks=None, yticks=None, xlim=None, ylim=None, rot=None, 
                fontsize=None, colormap=None, position=0.5, table=False, yerr=None, 
                xerr=None, stacked=True/False, sort_columns=False, 
                secondary_y=False, mark_right=True, **kwds)

 2 主要参数

kind 

绘图类型‘line’折线图
‘bar’

条形图。

stacked为True时为堆叠的柱状图

‘barh’ 横向条形图
‘hist’直方图(数值频率分布)
‘box’ 箱型图
‘kde’

Kernel Density Estimation plot

密度图,主要对柱状图添加Kernel 概率密度线

‘area’ 

与x轴所围区域图(面积图)。

Stacked=True时,每列必须全部为正或负值,

stacked=False时,对数据没有要求

‘pie’

饼图。

数值必须为正值,需指定Y轴或者subplots=True

‘scatter’ 散点图。需指定X轴Y轴
‘hexbin’ 蜂巢图。需指定X轴Y轴

subplots 

 boolean

default False

是否对列分别作子图

grid

图片是否有网格

legend

子图的图例 (默认为True)

logx 

设置x轴刻度是否取对数

logy 

设置y轴刻度是否取对数

loglog

同时设置x,y轴刻度是否取对数

xlim&ylim

设置坐标轴的范围。

数值(最小值)或元组(区间范围)

fontsize

设置轴刻度的字体大小

colormap

设置图的区域颜色

colorbar

柱子颜色

secondary_y 

 boolean or sequence, default False 

设置第二个y轴(右辅助y轴)

 2.1 其他需要注意的地方

2.1.1 设置X、Y轴名称

ax.set_ylabel('yyy')

ax.set_xlabel('xxx')

2.1.2 plt.legend(loc='best')

  • loc:图列位置

2.1.3每种绘图类型都有相对应的方法。

比如, df.plot(kind='line')与df.plot.line()等价

2.1.4 画图步骤

1)首先定义画图的画布:fig = plt.figure( )

2)然后定义子图ax ,使用 ax= fig.add_subplot( 行,列,位置标)

3)用 ax.plot( )函数或者 df.plot(ax = ax)

4)结尾加plt.show()

3 画图举例

3.0 直接做图

每一列一条线

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
#     ts = ts.cumsum()
    df =pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD')) 
    df = df.cumsum()

    df.plot()
    #每一列一条线

 

3.0.1 多个子图

import pandas as pd
import numpy as np
from pandas.plotting import scatter_matrix
df = pd.DataFrame(np.random.randn(100, 4), columns=["a", "b", "c", "d"])
df.plot(subplots=True)

 

 3.0.1.1 子图任意排列

import pandas as pd
import numpy as np
from pandas.plotting import scatter_matrix
df = pd.DataFrame(np.random.randn(100, 4), columns=["a", "b", "c", "d"])
df.plot(subplots=True,layout=(2,3))

 

 

3.1 主副轴

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

    df =pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD')) 
    df = df.cumsum()
    #A图用左Y轴标注,B图用右Y轴标注,二者共用一个X轴
    df.A.plot()#对A列作图,同理可对行做图
    df.B.plot(secondary_y=True, style='g')#设置第二个y轴(右y轴)

 3.1.1 主副轴分别设置标签位置

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

    df =pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD')) 
    df = df.cumsum()

    ax = df.plot(secondary_y=['A', 'B'])
# 定义column A B使用右Y轴。

    ax.set_ylabel('CD scale')
    ax.right_ax.set_ylabel('AB scale')
    ax.legend(loc='upper left') #设置图例的位置
    ax.right_ax.legend(loc='upper right')
#分别设置主副轴的位置和标题

    plt.show()

3.2 条形图

3.2.1 单组

import pandas as pd
data=[{'A':10,'B':5,'C':15}]
df=pd.DataFrame(data)
df.plot(kind='bar')

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.iloc[0].plot(kind='bar')

 

 3.2.2 多组

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot(kind='bar')

 3.2.3 堆积条形图

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot(kind='bar',stacked=True)

3.2.4 水平条形图

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot(kind='barh')

 

3.3直方图

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot(kind='hist',alpha=0.8)

3.4 箱式图

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot(kind='box')

 

 3.5 面积图

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot(kind='area')

 3.5.1 非堆积面积图

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
df.plot(kind='area',stacked=False)

 3.6 饼图

3.6.1 单组饼图

import pandas as pd
import numpy as np
df=pd.Series(np.random.rand(4),
                index=['a','b','c','d'],
               name='PIE')
df.plot(kind='pie',subplots=True)

 3.6.2 多组饼图

import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.rand(4,2),
                index=['a','b','c','d'],
               columns=['P1','P2'])
df.plot(kind='pie',subplots=True)

3.7 核密度图

import pandas as pd
import numpy as np
from pandas.plotting import scatter_matrix
df = pd.DataFrame(np.random.randn(1000, 4), columns=["a", "b", "c", "d"])
df.plot(kind='kde')

 

 

 4 分面图(scatter_matrix)

import pandas as pd
import numpy as np
from pandas.plotting import scatter_matrix
df = pd.DataFrame(np.random.randn(1000, 4), columns=["a", "b", "c", "d"])
scatter_matrix(df, alpha=0.2, figsize=(6, 6), diagonal="kde");

 

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用PythonPandas库绘制柱状图。首先需要导入Pandas和Matplotlib库,然后读取数据并进行处理,最后使用Pandasplot()函数绘制图表。例如: import pandas as pd import matplotlib.pyplot as plt data = {'城市': ['北京', '上海', '广州', '深圳'], '人口数量': [2171, 2424, 1482, 1258]} df = pd.DataFrame(data) ax = df.plot.bar(x='城市', y='人口数量', rot=0) plt.show() 以上代码将绘制一个柱状图,显示四个城市的人口数量。其中,x参数为横轴数据,y参数为纵轴数据,rot参数控制横轴刻度旋转角度,plt.show()函数显示图表。 ### 回答2: PandasPython中一个很强大的数据处理库,可以用来处理各种类型的数据,其中包括绘制柱状图。在使用Pandas绘制柱状图时,需要准备好需要绘制的数据,然后使用Pandas提供的plot函数进行绘制。 具体而言,首先需要准备好数据,通常可以通过读取Excel、CSV等文件来获取数据,也可以手动创建数据。假设我们需要绘制一份销售数据的柱状图,其中包括了各个地区的销售数据和总销售数据,可以采用如下的方式准备数据: ``` import pandas as pd # 创建一个DataFrame对象,包含各个地区的销售数据和总销售数据 data = {'Region': ['东北', '华东', '华南', '华北', '西南'], 'Sales': [5678, 8765, 4321, 9876, 2345]} df = pd.DataFrame(data) # 显示数据 print(df) ``` 输出: ``` Region Sales 0 东北 5678 1 华东 8765 2 华南 4321 3 华北 9876 4 西南 2345 ``` 数据准备好后,就可以使用Pandas提供的plot函数绘制柱状图了,示例代码如下: ``` import matplotlib.pyplot as plt # 设置横坐标为Region,纵坐标为Sales,绘制柱状图 df.plot(kind='bar', x='Region', y='Sales') # 显示图形 plt.show() ``` 输出: ![pandas_bar_chart.png](https://i.loli.net/2021/04/28/NzYGkUi59j1tdDQ.png) 通过以上代码可以看到,使用Pandas绘制柱状图非常简单。我们只需通过plot函数设置绘图类型为bar,然后指定横纵坐标即可。此外,也可以通过plot函数设置其他参数,如颜色、图例等,以便更加详细地控制绘图效果。 ### 回答3: Pandas是一种基于Python的数据处理和分析工具,支持多种数据文件格式的读写,并提供了丰富的数据操作方法和统计分析函数。其中,pandasplot功能可以方便地生成各种常见的数据可视化图表,其中包括柱状图。下面将介绍PythonPandas绘制柱状图的步骤。 首先,在Python环境中安装好Pandas库,并导入Pandas库: ``` import pandas as pd ``` 然后,读取数据并进行预处理。假设数据文件名为data.csv,数据包含两个字段:类别和数量。可以使用Pandas的read_csv()函数读取数据文件,将数据转换成DataFrame格式,并根据类别进行分组计数: ``` data = pd.read_csv("data.csv") grouped = data.groupby("类别").sum() ``` 接着,使用Pandasplot()函数绘制柱状图,并设置坐标轴标签、标题、图例等属性: ``` grouped.plot(kind="bar", title="柱状图", legend=False) plt.xlabel("类别") plt.ylabel("数量") plt.show() ``` 此外,还可以设置柱状图的颜色、宽度、边框等参数。例如,设置柱状图的颜色为蓝色、宽度为0.6、边框颜色为黑色: ``` grouped.plot(kind="bar", title="柱状图", legend=False, color="blue", width=0.6, edgecolor="black") plt.xlabel("类别") plt.ylabel("数量") plt.show() ``` 以上就是PythonPandas绘制柱状图的主要步骤和注意事项。在实际应用中,根据具体需求,还可以进行更多的参数设置和图表美化,如设置字体、字号、刻度标签等属性,增加数据标签或注释等效果。对于大规模数据的柱状图,也可以采用堆叠式、分组式、分段式等多种形式进行可视化,以更好地展示数据特征和趋势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值