Python中如何转换DataFrame以进行时间序列分析并统计每日文本频次
统计每日文本出现频次的实现方案
以下基于Python Pandas库实现,假设你已经将原始数据集读入为DataFrame,命名为raw_df:
步骤1:标准化日期格式
首先确保日期列格式统一,避免字符串格式差异导致分组错误:
import pandas as pd # 将日期列转为datetime类型后统一为yyyy-mm-dd格式,可根据需要选择输出为date类型或字符串类型 # 方式1:输出为date对象类型 raw_df['日期字段'] = pd.to_datetime(raw_df['日期字段']).dt.date # 方式2:输出为字符串类型 # raw_df['日期字段'] = pd.to_datetime(raw_df['日期字段']).dt.strftime('%Y-%m-%d')
步骤2:按需求生成统计结果
方案A:生成仅包含唯一日期和对应频次的新DataFrame
# 按日期分组统计text列的非空数量 freq_df = raw_df.groupby('日期字段', as_index=False)['text'].count() # 重命名列,方便后续时间序列分析使用 freq_df.columns = ['统计日期', '当日文本频次']
得到的freq_df就是你需要的、仅包含唯一日期和对应文本数量的数据集,可直接用于后续可视化或分析。
方案B:在原始数据集上新增频次列
如果你不需要单独的统计表,而是要给原始每一行数据增加对应日期的总频次:
raw_df['当日文本总频次'] = raw_df.groupby('日期字段')['text'].transform('count')
可选优化:补全频次为0的日期
如果你的分析需要覆盖整个两年周期,包含没有文本产生、频次为0的日期,可以额外执行以下代码补全:
# 生成覆盖整个数据周期的完整日期序列 full_dates = pd.date_range(start=freq_df['统计日期'].min(), end=freq_df['统计日期'].max(), freq='D').date # 补全缺失日期,频次默认填0 freq_df = freq_df.set_index('统计日期').reindex(full_dates, fill_value=0).reset_index() freq_df.columns = ['统计日期', '当日文本频次']
内容的提问来源于stack exchange,提问作者Piyush Ghasiya
相关产品推荐
相关产品推荐

