from pathlib import Path
import pandas as pd
import numpy as np

csv_path = Path(__file__).parent/"data"/"coffee_orders.csv"
df = pd.read_csv(csv_path)
print(df)

#观看前五行
print(df.head())

#观看行列数
print(df.shape)
x = df.shape[0]
y = df.shape[1]

print(x)
print(y)
#计算缺失值的数量
list = df.isnull()
# print(list)
# r = 0
# for n in range(x):
#     for m in range(y):
#         if list.iloc[n, m] == 1:
#             r += 1
r = list.sum().sum()
print('缺少的值数量是：', r)

#找出重复的清单并且删掉
# r = 0
# print(df.shape)
# for n in range(x):
#     for m in range(n + 1, x):
#         if df.iloc[n].equals(df.iloc[m]):
#             r = n
#
# df = df.drop(index=r)
df = df.drop_duplicates()
print(df.shape)

#将order_date转化为日期类型
df["order_date"] = pd.to_datetime(df["order_date"])
print(df["order_date"].dtype)

#找出缺失值的位置并且改数据
import pandas as pd

# 找到 quantity 缺失行的索引
r = None

for n in df.index:
    if pd.isna(df.loc[n, "quantity"]):
        r = n
        break

# 寻找其他条件相同、quantity 不缺失的订单
if r is not None:
    for n in df.index:
        if (
            n != r
            and df.loc[n, "product"] == df.loc[r, "product"]
            and df.loc[n, "category"] == df.loc[r, "category"]
            and df.loc[n, "unit_price"] == df.loc[r, "unit_price"]
            and df.loc[n, "order_type"] == df.loc[r, "order_type"]
            and pd.notna(df.loc[n, "quantity"])
        ):
            df.loc[r, "quantity"] = df.loc[n, "quantity"]
            break

print(df)

#删除不能计算的订单
for n in  df.index:
    if(df.loc[n, "unit_price"] == 'unknown'):
        df = df.drop(index = n)
print(df)

df["quantity"] = df["quantity"].astype(int)
print(df["quantity"].dtype)

df["unit_price"] = df["unit_price"].astype(float)

scales = df['quantity'] * df['unit_price']
print(scales)

df['scales'] = scales
print(df['scales'].dtype)
print(df)

#将数据存入文档
output_dir = Path(__file__).parent/"output"
output_dir.mkdir(exist_ok=True)
output_path = output_dir / "cleaned_orders.csv"
df.to_csv(output_path, index=False)

# 1. 本周总销售额是多少？
print("本周总销售额：", df['scales'].sum())
# 2. 哪一天销售额最高？
#首先计算每一天的销售额
Day = []
price_day = []
day = df.loc[0, "order_date"]
su = 0
for n in df.index:
    if(df.loc[n, "order_date"] == day):
        su += df.loc[n, "scales"]
    else:
        price_day.append(su)
        Day.append(day)
        day = df.loc[n, "order_date"]
        su = df.loc[n, "scales"]

price_day.append(su)
Day.append(day)

i = ['日期', '总额']
last = pd.Series([Day, price_day], index=i)
print(price_day)
print(last)
print("哪一天销售额最高")



# 3. 哪一种商品销量最高？
# 4. 堂食、外带两种订单方式各自的销售额是多少？
# 5. 单笔订单销售额的平均值是多少？
