我如何确定我的左秤? Matplotlib和熊猫

问题描述 投票:1回答:1

我正在尝试使用matplotlib绘制this data

我能够获取所有数据,并绘制琼斯与时间的关系图,但是当我尝试使用跌落数据集时,我的秤变得古怪。

我创建的图形和代码如下。

graph

import gspread
from oauth2client.service_account import ServiceAccountCredentials
import pandas as pd
from pandas import DataFrame
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np

scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']

credentials = ServiceAccountCredentials.from_json_keyfile_name(
         'pandastest-273019-00f3c09845fb.json', scope) # Your json file here

gc = gspread.authorize(credentials)

wks = gc.open("data").sheet1

data = wks.get_all_values()
headers = data.pop(0)

df = pd.DataFrame(data, columns=headers)
pd.set_option("display.max_rows",None,"display.max_columns", None)
print(df.head())

dates = []
fort = []
jones = []
pat = []
ferry = []
middle = []
north = []
canton = []
for x in data[:]:
    for i in range(0, len(x)):
        try:
            x[i] = int(x[i])
        except:
            continue

    print(x)
    dates.append(x[0])
    fort.append(x[1])
    jones.append(x[2])
    pat.append(x[3])
    ferry.append(x[4])
    middle.append(x[5])
    north.append(x[6])
    canton.append(x[7])

#fort
x = [dt.datetime.strptime(d,'%m/%d/%Y').date() for d in dates]
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=29))
plt.plot(x,fort)
plt.gcf().autofmt_xdate()
plt.legend(["fort", ])
plt.xlabel("Dates")
plt.ylabel("Matter")
plt.show()

有人知道这是为什么发生的,我该如何解决?

python pandas matplotlib gspread
1个回答
0
投票

您的y轴值是字符串,需要将它们转换为标量值,类似这样

for x in data[:]:
    # ...
    fort.append(int(x[1]))
    # ...

当然,解决这个问题的方法要简单得多,一旦将数据读入pandas数据框,您就可以直接提取列数据:

x = pd.to_datetime(df["Date"], format = "%m/%d/%Y")
fort = df["Fort McHenry Channel"].values

无论哪种情况,输出都是

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.