如何一次性获取DataFrame各列的四分位数?(数据集为df4)
获取DataFrame所有列的四分位数方法
要一次性获取数据集df4所有列的四分位数,不用费劲写复杂循环,pandas本身就有更高效的内置方法;如果一定要用循环,也有正确的写法,下面分别说明:
方法1:用pandas内置函数(推荐)
这是最简洁高效的方式,完全不需要手动写循环:
- 快速查看统计信息(含四分位数):用
describe()函数,默认会输出包括25%、50%、75%分位数在内的核心统计值:
要是只想保留四分位数,可以指定print(df4.describe())percentiles参数精准筛选:print(df4.describe(percentiles=[0.25, 0.5, 0.75])) - 精准获取四分位数:用
quantile()函数直接指定分位数,结果会以DataFrame格式返回,行是分位数,列是原数据的列,结构清晰:quartiles = df4.quantile([0.25, 0.5, 0.75]) print(quartiles)
方法2:正确的for循环写法
如果你坚持要用循环(比如需要对每列做额外处理),注意要筛选数值型列并正确存储结果,避免之前的错误:
import pandas as pd # 初始化字典存储每列的四分位数 col_quartiles = {} # 遍历所有列 for column in df4.columns: # 只处理数值类型的列,避免非数值列(如字符串、日期)报错 if pd.api.types.is_numeric_dtype(df4[column]): # 获取当前列的四分位数 q_values = df4[column].quantile([0.25, 0.5, 0.75]) col_quartiles[column] = q_values # 转成DataFrame方便查看 result_df = pd.DataFrame(col_quartiles) print(result_df)
你之前循环出错的常见原因:
- 没过滤非数值列,导致字符串、日期类型的列报错或返回无意义结果
- 没有将每列的结果存储汇总,只是临时打印后丢失
- 调用
quantile()时参数错误,比如没传入分位数列表
内容的提问来源于stack exchange,提问作者Pranav
相关产品推荐
相关产品推荐

