如何使用Python

时间:2017-07-28 01:38:55

标签: python matplotlib

如果我有以下数据并希望绘制一个表示以下[一段]数据的多线图,则以CSV格式的格式显示:

数据:

1216,C210,3610
1217,C210,1863
1218,C210,2419
1224,C210,861
1299,C210,2517
1216,C211,3593
1217,C211,1849
1218,C211,2410
1224,C211,859
1299,C211,2504
1216,C212,3595
1217,C212,1847
1218,C212,2407
1224,C212,860
1299,C212,2501

目标:

我想直观地将这些数据表示为: Data being represented in CSV file

问:如何操作CSV数据以便我可以使用Matplotlib和Python创建这样的图形?

The Sticky:到目前为止我做了什么,但卡住了:

def processing_and_graphing(m_list, c_list):
    with open(csv_dump, 'r') as input_csv_dump_file:
        input_csv = csv.reader(input_csv_dump_file, delimiter=',', skipinitialspace=False)

        with open(csv_temp, 'w', newline='') as output_csv_temp_file:
        for machine in m_list:
            write_into_csv_file = csv.writer(output_csv_temp_file, delimiter=',', quoting=csv.QUOTE_MINIMAL)

            for row in input_csv:
                if row[0] == machine:

困难:我有:

我在尝试重新组织我可以提供给Matplotlib的数据时遇到了极大的困难。

方法:我正在考虑的方法:

是迭代CSV文件并将数据转储到临时文件中,我可以使用它来生成图表(可以直接通过CSV或Panda或其他方法)。但我一直试图重新安排数据。

2 个答案:

答案 0 :(得分:0)

最简单的解决方案是使用pandas库:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('scratch.csv', header=None, names=['A', 'B', 'C'])
fig, ax = plt.subplots()
for label, df in df.groupby('A'):
    df.plot(x='B', y='C', ax=ax, label=label)

然后,您可以使用figax上的标准matplotlib命令格式化绘图。

答案 1 :(得分:0)

这是解决问题的一种可能方法。它读取csv文件,然后将其转换为pandas数据帧。之后,它循环通过ID并创建绘图。我遗漏了最终的变化,使得情节看起来更好(就像正确标记x轴一样)。希望它可以帮到你。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = np.genfromtxt('file.csv', delimiter=',', dtype=None)
df =  pd.DataFrame(data)
ids = df.f0.drop_duplicates()
for id in ids:
    id_data = df[df['f0'] == id]
    plt.plot([0,1,2], id_data['f2'].as_matrix())
plt.show()