Files
eu_active_script/hang/active_time_analysis.py

55 lines
2.1 KiB
Python
Raw Permalink Normal View History

import pandas as pd
from datetime import datetime
import os
# 配置参数
CONFIG = {
'input_csv': r'C:\Users\Administrator\Desktop\European Local O&M\all-active-0522.csv.csv',
'output_dir': './output',
'required_columns': ['car_vins', 'active_status', 'MATERIAL', 'Area','active_date']
}
df=pd.read_csv(CONFIG['input_csv'])
df['active_date'] = pd.to_datetime(df['active_date'], errors='coerce')
active_df = df[df['active_status'] == 'active']
daily_count = active_df.groupby(active_df['active_date'].dt.date).size().reset_index(name='active_count')
print(daily_count)
daily_count['active_date'] = pd.to_datetime(daily_count['active_date'])
daily_count.set_index('active_date', inplace=True)
weekly_count = daily_count.resample('W-MON').sum().reset_index() # 每周从周一开始
weekly_count.columns = ['week_start', 'weekly_active_count']
weekly_count['week_number'] = pd.to_datetime(weekly_count['week_start']).dt.isocalendar().week
weekly_count['year'] = pd.to_datetime(weekly_count['week_start']).dt.isocalendar().year
# 转换为 datetime 类型
weekly_count['week_start'] = pd.to_datetime(weekly_count['week_start'])
# 提取年份后两位、月份
weekly_count['year'] = weekly_count['week_start'].dt.year % 100
weekly_count['month'] = weekly_count['week_start'].dt.month
# 分组内生成「每月第几周」编号(用 cumcount
weekly_count['week_in_month'] = weekly_count.groupby(['year', 'month']).cumcount() + 1
# 拼接成格式25-1-4
weekly_count['year_month_week'] = (
weekly_count['year'].astype(str) + '-' +
weekly_count['month'].astype(str) + '-' +
weekly_count['week_in_month'].astype(str)
)
print(weekly_count)
# 获取输出目录路径
output_dir = CONFIG['output_dir']
os.makedirs(output_dir, exist_ok=True) # 自动创建目录(如果不存在)
# 拼接 Excel 文件路径
output_path = os.path.join(output_dir, 'active_car_number.xlsx')
# 导出
with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
daily_count.reset_index().to_excel(writer, sheet_name='Daily', index=False)
weekly_count.to_excel(writer, sheet_name='Weekly', index=False)
print(f"已成功导出至:{output_path}")