如何计算含整数与空白的Ref_r列的频率(Python Pandas)
实现方法
核心思路
value_counts() 默认仅统计数据中实际出现的值,无法自动补全1-99中未出现的数值及blank的0频率。我们需要预先定义完整的目标取值范围,再将统计结果对齐到这个范围并填充缺失值为0。
代码实现
首先读取CSV文件(若尚未读取):
import pandas as pd # 替换为你的CSV文件路径 df = pd.read_csv('your_data.csv')
执行频率统计:
# 构建完整的目标取值列表:1到99的整数 + 'blank' full_values = list(range(1, 100)) + ['blank'] # 统计列值频率(保留所有非空值),对齐到完整列表并填充0 frequency = df['Ref_r'].value_counts(dropna=False).reindex(full_values, fill_value=0) # 转换为预期的表格格式 result_df = frequency.reset_index().rename(columns={'index': 'Ref_r', 'Ref_r': 'Frequency'}) # 输出结果 print(result_df)
特殊情况处理
如果CSV中的空白值是用NaN而非字符串blank存储的,需调整代码适配:
import pandas as pd import numpy as np df = pd.read_csv('your_data.csv') full_values = list(range(1, 100)) + [pd.NA] frequency = df['Ref_r'].value_counts(dropna=False).reindex(full_values, fill_value=0) # 将NaN替换为字符串'blank'以匹配预期格式 result_df = frequency.reset_index().rename(columns={'index': 'Ref_r', 'Ref_r': 'Frequency'}) result_df['Ref_r'] = result_df['Ref_r'].replace(pd.NA, 'blank') print(result_df)
内容的提问来源于stack exchange,提问作者fatcat
相关产品推荐
相关产品推荐

