使用pandas autocorrelation_plot检查时间序列随机性时遇类型错误
解决Autocorrelation Plot的TypeError问题
这个错误我之前也碰到过,问题出在你给autocorrelation_plot传了整个DataFrame,但这个函数只接受单变量的数值型时间序列——你的DataFrame里有字符串类型的reqUser列,还有未处理的日期列,函数面对混合类型时无法正确解析,才抛出了coercing to Unicode: need string or buffer, float found的类型错误。
下面是具体的修复步骤:
1. 先把日期列转为datetime类型并设为索引
时间序列分析的前提是要有正确的时间索引,所以先处理DATE列:
import pandas as pd from pandas.plotting import autocorrelation_plot import matplotlib.pyplot as plt # 假设你的DataFrame变量名为df df['DATE'] = pd.to_datetime(df['DATE']) df = df.set_index('DATE')
2. 传入单一数值列绘制自相关图
现在只需要把你要分析的sum_event_count列传给函数即可:
autocorrelation_plot(df['sum_event_count']) plt.show()
3. 如果需要按用户分别分析
你的数据里包含不同的reqUser,如果想单独查看每个用户的事件数自相关性,可以分组后循环绘图:
# 按用户分组 user_groups = df.groupby('reqUser') # 为每个用户单独绘制自相关图 for user, group in user_groups: plt.figure(figsize=(8,4)) autocorrelation_plot(group['sum_event_count']) plt.title(f'Autocorrelation for User: {user}') plt.show()
这样处理后,函数就能正确识别数值型的时间序列,不会再出现类型错误啦。
内容的提问来源于stack exchange,提问作者Arij SEDIRI
相关产品推荐
相关产品推荐

