Python 如何从具有相同字段名的多个数据集中绘图?

Python 如何从具有相同字段名的多个数据集中绘图?,python,matplotlib,Python,Matplotlib,我有几个每月的使用统计数据集存储在不同的CSV中,有几百个字段。我正在删掉每一个的前30个,但底部会发生变化(顶部会随着内容被禁止而变化,尽管不太常见)。目前,我有代表月份的行,但我希望点是(y=使用率%)和(x=月份),图例是不同的用户 column[0] is their number in the file (1-30) column[1] is their name column[2] is the usage percent AprilStats=pd.read\u csv(r'fi

我有几个每月的使用统计数据集存储在不同的CSV中,有几百个字段。我正在删掉每一个的前30个,但底部会发生变化(顶部会随着内容被禁止而变化,尽管不太常见)。目前,我有代表月份的行,但我希望点是(y=使用率%)和(x=月份),图例是不同的用户

column[0] is their number in the file (1-30)
column[1] is their name
column[2] is the usage percent
AprilStats=pd.read\u csv(r'filepath',nrows=30)
MayStats=pd.read\u csv(r'filepath',nrows=30)
JuneStats=pd.read\u csv(r'filepath',nrows=30)
##指定标签和源
labels=[[AprilStats.columns[1]]、[MayStats.columns[1]]、[JuneStats.columns[1]]
AprilUsage=np.array(AprilStats[AprilStats.columns[2]].tolist())
mayausage=np.array(MayStats[MayStats.columns[2]].tolist())
JuneUsage=np.array(JuneStats[JuneStats.columns[2]].tolist())
x=np.array(AprilStats[AprilStats.columns[0]].tolist())
y=np.array(AprilStats[AprilStats.columns[2]].tolist())
my_xticks=AprilStats[AprilStats.columns[1]].tolist()
plt.xticks(x,myxticks,rotation='55')
x1=np.array(MayStats[MayStats.columns[0]].tolist())
y1=np.array(MayStats[MayStats.columns[2]].tolist())
my_xticks1=MayStats[MayStats.columns[1]].tolist()
plt.xticks(x,myxticks1,rotation='55')
x2=np.array(JuneStats[JuneStats.columns[0]].tolist())
y2=np.array(JuneStats[JuneStats.columns[2]].tolist())
my_xticks2=JuneStats[JuneStats.columns[1]].tolist()
plt.xticks(x,myxticks2,rotation='55',)
###绘制数据
plt.rc('xtick',labelsize='xx-small')
plt.title(‘小杯子使用’)
plt.ylabel(‘使用率(百分比)’)
plt.plt(x,y,label='April',color='green',alpha=.4)
plt.plt(x1,y1,label='May',color='blue',alpha=.4)
plt.图(x2,y2,标签为六月,颜色为红色,α=0.4)
plt.子批次调整(底部=0.2)
plt.legend()
plt.savefig('90daytest.png',dpi=500)
plt.show()

我想我给它们贴错标签了,但是使用月份没有存储在文件中。我想我可以添加它,但我不想每个月都去编辑这些文件。另外,如果这是非常不完善的编码,我也很抱歉,我在不到两周前才开始学习python,这是一个我要学习的小项目。

我将此分为两个步骤:

  • 将所有数据收集到一个数据框中,其中行对应于不同的月份,列对应于不同的名称,值为使用率%
  • 在散点图中将每列绘制为不同的系列
  • 步骤1:

    # Create a dictionary associating a file to each month
    files = {dt.date(2019, 4, 1): 'april.csv',
            dt.date(2019, 5, 1): 'may.csv'}
    
    # An empty data frame
    df = pd.DataFrame()
    
    ''' For each file, generate a one entry data frame as follows, and append it to df.
            Month         name1         name2        ...
            2019-1-1      0.5           0.2
    ''' 
    for month, file in files.items():
        data = pd.read_csv(file, usecols=['name', 'usage'], index_col='name')
        data = data.transpose()
    
        data['month'] = month
        data = data.set_index('month')
    
        df = df.append(data)
    
    步骤2:

    # New figure
    fig = plt.figure()
    
    # Plot one series for each column in df
    for name in df.columns:
        plt.scatter(x=df.index, y=df[name], label=name)
    
    # Additional plot formatting code here
    
    plt.show()
    

    我希望这会有所帮助。

    您显然已经付出了一些努力,但提供帮助将有助于在这里获得良好的帮助。特别是,mcve的“v”部分意味着您的示例数据和代码应该一起工作来演示您遇到的问题——或者至少显示您自己的问题所在。Post-script,因为我错过了编辑窗口。。。理想情况下,您可以提供一些代码,这里的人可以简单地复制并粘贴到python IDE中并运行(即,不要让您的读者使用
    pd.read\u clipboard()
    )。使用
    pandas.DataFrame.to_dict()
    可以帮上忙。啊,对不起!我是StackExchange新手,没有掌握所有最佳实践的最新进展。