如何在具有列表值的列的熊猫中创建多个线图?

Mil*_*001 3 python pandas

我想知道如何以列为元素的列来绘制熊猫数据框的多条线图。

例如,我可以使用此数据绘制两个图:

import numpy as np
import pandas as pd
import seaborn as sns
sns.set(color_codes=True)

import matplotlib.pyplot as plt
%matplotlib inline

df = pd.DataFrame({
    'pig': [20, 18, 489, 675, 1776],
    'horse': [4, 25, 281, 600, 1900]},
    index=[1990, 1997, 2003, 2009, 2014])

df.plot.line()

Run Code Online (Sandbox Code Playgroud)

但是,如何为以下数据绘制相似的两个图?

df1 = pd.DataFrame({
    'pig': [[20, 18, 489, 675, 1776],[20, 18, 489, 675, 1776]],
    'horse': [[14, 25, 271, 700, 1900],[14, 65, 381, 600, 1900]]},
    index=['A','B']
    )

print(df1)
                        pig                     horse
A  [20, 18, 489, 675, 1776]  [14, 25, 271, 700, 1900]
B  [20, 18, 489, 675, 1776]  [14, 65, 381, 600, 1900]

Run Code Online (Sandbox Code Playgroud)

对于每个索引A和B,我都希望x轴=猪,y轴=马图。但是我不确定该怎么做。非常感谢您的帮助。

Ann*_*son 5

您可以遍历索引,虽然这样做并不是Pandas的最佳实践,但它适用于您的情况:

import pandas as pd
import matplotlib.pyplot as plt

df1 = pd.DataFrame({
    'pig': [[20, 18, 489, 675, 1776],[20, 18, 489, 675, 1776]],
    'horse': [[14, 25, 271, 700, 1900],[14, 65, 381, 600, 1900]]},
    index=['A','B']
    )

for idx in df1.index.values:
    plt.plot(df1['pig'].loc[idx], df1['horse'].loc[idx], label=idx)
plt.legend()    
plt.xlabel('Pig')
plt.ylabel('Horse')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明