首页 > 解决方案 > 如何在具有列表值的列的熊猫中创建多条线图?

问题描述

我想知道如何绘制具有列表作为元素的列的熊猫数据框的多线图。

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

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()

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

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]

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

标签: pythonpandas

解决方案


您可以遍历索引,但这不是 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()

在此处输入图像描述


推荐阅读