pandas 同时计算 平均值、中位数、极差、最大值和最小值
时间: 2023-10-01 08:08:42 浏览: 279
可以使用 pandas 库中的 describe() 方法来计算这些统计量:
```python
import pandas as pd
# 创建一个数据框
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]})
# 使用 describe() 方法计算统计量
result = df.describe()
# 打印结果
print(result)
```
输出:
```
A B
count 5.00000 5.000000
mean 3.00000 30.000000
std 1.58114 15.811388
min 1.00000 10.000000
25% 2.00000 20.000000
50% 3.00000 30.000000
75% 4.00000 40.000000
max 5.00000 50.000000
```
其中 count 表示数量,mean 表示平均值,std 表示标准差,min 和 max 分别表示最小值和最大值,25%、50% 和 75% 则分别表示第一、二、三个四分位数,也就是数据中分别有 25%、50% 和 75% 的值小于这个数。
相关问题
用python的pandas计算数据集的均值、中位数、众数和中列数、极差、四分位数、四分位数极差
在Python的Pandas库中,你可以使用`DataFrame`的内置函数来轻松计算各种统计数据。以下是如何获取你提到的各种统计量:
1. **平均值 (均值)**: 使用 `mean()` 函数,它返回每列的平均值。
```python
df['column_name'].mean()
```
2. **中位数**: 使用 `median()` 函数,它计算的是数值型列的中位数。
```python
df['column_name'].median()
```
3. **众数 (出现频率最高的值)**: 使用 `mode()` 函数,适用于分类变量,如果数据是连续的可以用 `value_counts(normalize=True).idxmax()` 来找到最常出现的值。
```python
df['column_name'].mode().values[0] 或 df['column_name'].value_counts(normalize=True).idxmax()
```
4. **中位数绝对偏差 (Median Absolute Deviation, MAD)**: 如果你想得到非对称分布数据的离散度测量,可以使用 `mad()` 函数。
```python
from scipy.stats import mad
mad_value = mad(df['column_name'])
```
5. **极差 (Range)**: 通过最大值减去最小值获得。
```python
df['column_name'].max() - df['column_name'].min()
```
6. **四分位数 (Quartiles)**: 可以使用 `quantile()` 函数,设置 `q=[0.25, 0.5, 0.75]` 分别获取第一四分位数(Q1), 中位数(Median) 和第三四分位数(Q3)。
```python
q1, median, q3 = df['column_name'].quantile([0.25, 0.5, 0.75])
```
7. **四分位数范围 (Interquartile Range, IQR)**: 第三四分位数减去第一四分位数。
```python
iqr = q3 - q1
```
记得将 `'column_name'` 替换为你实际需要计算的列名。
python股票统计分析实践:创建股票统计指标的excel文件,数据量不能太少,做如下分析 (1)计算成交量加权平均价格 (2)计算最大值和最小值 (3)计算极差 (4)计算中位数 (5)计算方差 计算股票年波动率以及月波动率
好的,我来为您讲解如何实现这些统计分析。
首先,需要使用pandas模块读取数据,可以使用read_csv函数,例如:
```python
import pandas as pd
df = pd.read_csv('stock_data.csv')
```
其中,'stock_data.csv'是股票数据的文件名,需要根据实际情况进行修改。
接下来,需要计算成交量加权平均价格,可以使用如下代码:
```python
weighted_price = (df['close'] * df['volume']).sum() / df['volume'].sum()
```
其中,'close'是收盘价列,'volume'是成交量列。
然后,需要计算最大值和最小值,可以使用max和min函数,例如:
```python
max_price = df['close'].max()
min_price = df['close'].min()
```
接着,需要计算极差和中位数,可以使用ptp和median函数,例如:
```python
range_price = df['close'].ptp()
median_price = df['close'].median()
```
最后,需要计算方差,可以使用var函数,例如:
```python
var_price = df['close'].var()
```
接下来,需要计算股票年波动率和月波动率,可以使用如下代码:
```python
import numpy as np
# 计算日收益率
df['return'] = df['close'].pct_change()
# 计算年波动率
annual_volatility = np.sqrt(252) * df['return'].std()
# 计算月波动率
monthly_volatility = np.sqrt(12) * df['return'].std()
```
其中,sqrt函数是计算平方根,252和12分别是一年和一个月的交易日数量。
最后,将上述统计指标写入excel文件,可以使用pandas的to_excel函数,例如:
```python
writer = pd.ExcelWriter('stock_statistics.xlsx')
pd.DataFrame({'weighted_price': [weighted_price]}).to_excel(writer, sheet_name='Sheet1', index=False)
pd.DataFrame({'max_price': [max_price], 'min_price': [min_price], 'range_price': [range_price], 'median_price': [median_price], 'var_price': [var_price]}).to_excel(writer, sheet_name='Sheet2', index=False)
pd.DataFrame({'annual_volatility': [annual_volatility], 'monthly_volatility': [monthly_volatility]}).to_excel(writer, sheet_name='Sheet3', index=False)
writer.save()
```
其中,'stock_statistics.xlsx'是存储统计指标的excel文件名,需要根据实际情况进行修改。Sheet1、Sheet2、Sheet3是分别存储成交量加权平均价格、最大值和最小值、股票年波动率以及月波动率的工作表名,可以根据需要进行修改。
阅读全文