Skip to content

Instantly share code, notes, and snippets.

@alanboy
Created October 17, 2024 16:14
Show Gist options
  • Select an option

  • Save alanboy/5be5eead37d9b3e8a27073d8e63ea53e to your computer and use it in GitHub Desktop.

Select an option

Save alanboy/5be5eead37d9b3e8a27073d8e63ea53e to your computer and use it in GitHub Desktop.
import pandas as pd
import os
import matplotlib.pyplot as plt
from datetime import datetime, date
from os.path import join
from os import listdir
def createdf() -> pd.DataFrame:
firstdf = None
for f in listdir("./data"):
if f.endswith(".csv"):
if firstdf is None:
firstdf = pd.read_csv(join("./data", f))
else:
first_df = pd.concat([first_df, pd.read_csv(join("./data", f))])
return first_df
def average_organic_price(df: pd.DataFrame) -> float:
df_filtered = df[df.Type == 'Organic']
return df_filtered['High Price'].mean()
def best_seller(df: pd.DataFrame, day: datetime, city: str) -> pd.Series:
df_filtered = df[(df['City Name'] == city)]
df_filtered['DateConverted'] = pd.to_datetime(df_filtered['Date'])
df_dated = df_filtered[ df_filtered['DateConverted'] == day]
result = df_dated[['Variety','High Price']].groupby('Variety').max()
result_index = result['High Price']
return result_index
def plot_prices(df: pd.DataFrame, city: str, variety: str) -> None:
df_filtered = df[(df['City Name'] == city) & (df['Variety'] == variety)]
df_grouped = df_filtered[['Low Price', 'Date']].groupby('Date').min()
plot = df_grouped.plot(title=f'{city} LOW PRICES FOR {variety}', color='blue')
plt.xticks(rotation=60)
fig = plot.get_figure()
fig.savefig('prices_plot.png', bbox_inches='tight')
if __name == "__main":
df = create_df()
print("Average organic price: ")
print(average_organic_price(df))
print("Best seller: ")
dd = datetime(2016, 9, 24)
best_seller_df = best_seller(df, dd, 'ATLANTA')
print(best_seller_df)
print(type(best_seller_df))
print(best_seller_df.index)
print("Plotting prices: ")
plot_prices(df, 'ATLANTA', 'HOWDEN TYPE')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment