Python实现统计DataFrame中指定区间浮点数的数量
Python实现DataFrame区间数值统计(对应Excel FREQUENCY函数)
可以用Pandas轻松实现这个需求,下面给出两种常用方案,你可以根据自己的Excel输出结果调整区间边界:
方案一:用pd.cut快速划分区间并统计
这个方法和Excel的FREQUENCY逻辑最接近,适合快速生成区间统计结果:
import pandas as pd # 读取你的源文件(Excel用read_excel,CSV用read_csv) df = pd.read_excel('你的源文件路径.xlsx') # 定义目标区间,可根据需求调整边界 bins = [0, 90, 180] # include_lowest=True 确保第一个区间包含左端点0,sort_index()保证区间按顺序排列 counts = pd.cut(df['目标列名'], bins=bins, include_lowest=True).value_counts().sort_index() # 转成和Excel类似的输出DataFrame result_df = counts.reset_index(name='数量') result_df.columns = ['区间', '数量'] print(result_df)
方案二:布尔索引手动统计
如果你需要更精准控制区间的开闭(比如明确90属于哪个区间),可以用布尔索引直接计算:
import pandas as pd df = pd.read_excel('你的源文件路径.xlsx') target_col = '目标列名' # 统计0-90区间(包含两端)的数量 count_0_90 = len(df[(df[target_col] >= 0) & (df[target_col] <= 90)]) # 统计90-180区间(这里设置为包含90,可改成>90来排除) count_90_180 = len(df[(df[target_col] >= 90) & (df[target_col] <= 180)]) # 构建结果DataFrame result_df = pd.DataFrame({ '区间': ['0-90', '90-180'], '数量': [count_0_90, count_90_180] }) print(result_df)
多列数据统计
如果你的DataFrame有多列需要统计,用apply批量处理:
import pandas as pd df = pd.read_excel('你的源文件路径.xlsx') def calc_interval_counts(series): cnt_0_90 = len(series[(series >= 0) & (series <= 90)]) cnt_90_180 = len(series[(series >= 90) & (series <= 180)]) return pd.Series([cnt_0_90, cnt_90_180], index=['0-90数量', '90-180数量']) # 对每一列应用统计函数,转置后得到清晰的结果 result_df = df.apply(calc_interval_counts).transpose() print(result_df)
内容的提问来源于stack exchange,提问作者eioaa
相关产品推荐
相关产品推荐

