当我运行代码时,我没有在 Python 中得到我想要的直方图

-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)

Tim*_*rts 5

您还没有调用任何函数。我怀疑你最后想要这个:

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 将该列读取为整数,而不是字符串。