如何使用matplotlib将我的CSV文件的五个第一个值用作x轴?

时间:2017-03-04 21:36:40

标签: python csv pandas

我的python scraper从Web中提取动态值并将其保存为: ([年,月,日,小时,分钟,价格])

我想将前5个放在x轴上,将价格放在y上。 例如2017/03/01/09:34 x坐标和1230 y坐标。或者更好的是将小时和分钟作为x坐标,将年月和日作为标题。

以下是我用来附加csv文件的代码:

import csv
with open("example.csv", 'a') as example:
        Writer = csv.writer(example)
        Writer.writerow([year, month, day, hour, minute, price])

我昨天刚开始学习matplotlib,但到目前为止这是我为绘图而尝试的代码:

import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame

df = pd.read_csv(example.csv")

df.plot()
plt.show()

1 个答案:

答案 0 :(得分:0)

x 轴上绘制5个值并不是很有意义,但很方便,您的行只是一个爆炸日期和价格,因此您可以将其重新形成一个2列的数据帧。

所以,使用csv看起来像:

year,month,day,hour,minute,price
1999, 12,    31,  23,   59,   10
2000, 12,    20,  23,   59,   15
2001,  6,    15,  23,   59,   13
2001, 12,     2,  23,   59,   17
你可以像这样处理它:

import datetime
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("./example.csv")


def make_a_real_date(the_row):
    year = the_row[0]
    month = the_row[1]
    day = the_row[2]
    hour = the_row[3]
    minute = the_row[4]
    price = the_row[5]  # although we don't care about price for now
    # https://docs.python.org/2/library/datetime.html#datetime-objects
    return datetime.datetime(year, month, day, hour, minute)


df["real_datetime"] = df.apply(make_a_real_date, axis=1)

df = df.drop(["year", "month", "day", "hour", "minute"], axis=1)

df.plot()
plt.show()

这将为您提供时间和价格的图表。您可能也想查看plot_date。绘制时间序列数据是一件痛苦的事情!