带有 for 循环的单个图中的多个图形

Multiple graphs in a single plot with a for loop

我试图在单个图中显示 n 个图表,n 是 U.S 个状态的数量。

编译器不喜欢这两行x[j] = df['Date'] y[j] = df['Value']

=> 类型错误:'NoneType' 对象不可订阅

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

states = pd.read_html('https://simple.wikipedia.org/wiki/List_of_U.S._states')
j = 0
x = []
y = []

for i in states[0][0][1:]:
        df = quandl.get("FMAC/HPI_"+i, authtoken="yourtoken" )
        df = df.reset_index(inplace=True, drop=False)
        x[j] = df['Date']
        y[j] = df['Value']
        j += 1

plt.plot(x[j],y[j])
plt.xlabel('Date')
plt.ylabel('Value')
plt.title('House prices')
plt.legend()
plt.show()

这个特定错误的问题在于您使用了 inplace 参数并将其赋值回变量 df。当使用等于 True 的 inplace 参数时,return 是 None.

print(type(df.reset_index(inplace=True, drop=False)))
NoneType

print(type(df.reset_index(drop=False)))
pandas.core.frame.DataFrame

使用 inplace=True 并且不分配回 df:

df.reset_index(inplace=True, drop=False)

或对 inplace=False 使用默认值并赋值回变量 df

df = df.reset_index(drop=False)

这里还有其他一些逻辑错误。

编辑以获得工作图表(测试限制为 20 个)

for i in states[0][0][1:20]:
        df = quandl.get("FMAC/HPI_"+i, authtoken="yourtoken" )
        df.reset_index(inplace=True, drop=False)
        plt.plot('Date','Value',data=df)


# plt.plot(x[j],y[j])
plt.xlabel('Date')
plt.ylabel('Value')
plt.title('House prices')
plt.show()