-2 python
我不知道我做错了什么,但是当我运行代码时我没有看到任何东西。这是代码:
import pandas as pd
import matplotlib.pyplot as plt
def readData():
df = pd.read_excel('BakeryData_Vilnius.xlsx')
print(df.head())
return df
def filterData(df):
filterWeekday = df[df['weekday'].isin(["5", "6", "7"])]
filterDate = df[(df['date'] < '2021-03-01') & (df['date'] > '2022-03-01')]
dataFiltered = df.loc[filterWeekday & filterDate]
return dataFiltered
def dataMainStreetA(dataFiltered):
d_MSA_5 = dataFiltered[(dataFiltered['weekday']== 5) & (dataFiltered['main street A'])]
d_MSA_6 = dataFiltered[(dataFiltered['weekday']== 6) & (dataFiltered['main street A'])]
d_MSA_7 = dataFiltered[(dataFiltered['weekday']== 7) & (dataFiltered['main street A'])]
return d_MSA_5, d_MSA_6, d_MSA_7
def dataStationA(dataFiltered):
d_SA_5 = dataFiltered[(dataFiltered['weekday']== 5) & (dataFiltered['station A'])]
d_SA_6 = dataFiltered[(dataFiltered['weekday']== 6) & (dataFiltered['station A'])]
d_SA_7 = dataFiltered[(dataFiltered['weekday']== 7) & (dataFiltered['station A'])]
return d_SA_5, d_SA_6, d_SA_7
def plotHistograms (d_MSA_5, d_MSA_6, d_MSA_7, d_SA_5, d_SA_6, d_SA_7):
plt.figure(figsize=(10, 6))
plt.subplot(2,3,1)
plt.hist(d_MSA_5, bins=15)
plt.title('Main Street A - Friday')
plt.xlabel('Demand')
plt.ylabel('Frequency')
plt.subplot(2,3,2)
plt.hist(d_MSA_6, bins=15)
plt.title('Main Street A - Saturday')
plt.xlabel('Demand')
plt.ylabel('Frequency')
plt.subplot(2,3,3)
plt.hist(d_MSA_7, bins=15)
plt.title('Main Street A - Saturday')
plt.xlabel('Demand')
plt.ylabel('Frequency')
plt.subplot(2,3,4)
plt.hist(d_SA_5, bins=15)
plt.title('Station A - Friday')
plt.xlabel('Demand')
plt.ylabel('Frequency')
plt.subplot(2,3,5)
plt.hist(d_SA_6, bins=15)
plt.title('Station A - Saturday')
plt.xlabel('Demand')
plt.ylabel('Frequency')
plt.subplot(2,3,6)
plt.hist(d_SA_7, bins=15)
plt.title('Station A - Sunday')
plt.xlabel('Demand')
plt.ylabel('Frequency')
plt.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)
您还没有调用任何函数。我怀疑你最后想要这个:
if __name__ == "__main__":
df = readData()
df = filterData(df)
m5,m6,m7 = dataMainStreetA(df)
d5,d6,d7 = dataStationA(df)
plotHistograms(m5,m6,m7,d5,d6,d7)
Run Code Online (Sandbox Code Playgroud)
您提到的下一个问题是&操作员抱怨日期数据。那大概是在filterData. 该表达式df['weekday'].isin(["5", "6", "7"])生成一个布尔值数组。当您将其传递给 时df[...],它会选择一系列行。因此,filterWeekday包含一系列行,而不是行选择器。因此,您的df.loc电话似乎是错误的。
我认为您想要这个,但在没有看到数据的情况下,我们无法确定:
def filterData(df):
filterWeekday = df['weekday'].isin(["5", "6", "7"])
filterDate = (df['date'] < '2021-03-01') & (df['date'] > '2022-03-01')
return df[filterWeekday & filterDate]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,两个变量都是布尔行选择数组,可以与 组合&。
再说一次,我怀疑你真的想要.isin([5,6,7])这里,假设 pandas 将该列读取为整数,而不是字符串。