python excel 加权平均数
时间: 2023-09-30 12:05:54 浏览: 291
要计算Python中Excel表格的加权平均数,可以使用NumPy和Pandas库来进行操作。首先,通过读取Excel文件,将数据存储到一个变量中。然后,将权重与分数相乘,并求和,再除以权重的总和即可得到加权平均数。下面是一个示例代码:
```
import numpy as np
import pandas as pd
# 读取Excel文件
score = pd.read_excel(r"C:\Users\Lenovo\Desktop\理想成绩.xlsx")
# 计算加权平均数
weighted_average = (score['weight'].mul(score['score'])).sum() / score['weight'].sum()
# 打印结果
print("加权平均分为:", weighted_average)
```
以上代码中,`score['weight']`表示权重列,`score['score']`表示分数列。通过`mul()`方法将两列相乘,然后使用`sum()`方法求和,再除以权重的总和,即可得到加权平均数。
相关问题
根据给出的【统计学类专业成绩单.xlsx】,用Python完成下列问题: (1)将缺考的成绩(缺失值)记为 0 分(fillna) (2)请添加 2 列,1 列为加权平均成绩,另 1 列为加权平均绩点,绩点计算方式为: 加权的权重为学分,已在列名中标注。(apply) (3)请筛选出不及格同学的行(多条件布尔索引) (4)请查看每个班级中,加权平均分在前 5 名的同学,(groupby+apply),把这些行存入一 个新的.csv 文件。
好的,我来回答你的问题。
(1)将缺考的成绩(缺失值)记为 0 分(fillna):
```python
import pandas as pd
# 读取Excel文件
df = pd.read_excel('统计学类专业成绩单.xlsx')
# 将缺失值替换为0
df.fillna(0, inplace=True)
# 打印处理后的数据框
print(df)
```
(2)请添加 2 列,1 列为加权平均成绩,另 1 列为加权平均绩点,绩点计算方式为: 加权的权重为学分,已在列名中标注。(apply):
```python
import pandas as pd
# 读取Excel文件
df = pd.read_excel('统计学类专业成绩单.xlsx')
# 计算加权平均成绩和加权平均绩点
df['加权平均成绩'] = df.apply(lambda x: (x['高等数学']*4 + x['线性代数']*4 + x['概率论与数理统计']*5 + x['统计软件']*2 + x['应用回归分析']*3 + x['大学英语']*2 + x['大学物理']*3 + x['离散数学']*3)/26, axis=1)
df['加权平均绩点'] = df.apply(lambda x: (x['高等数学']*4*4 + x['线性代数']*4*4 + x['概率论与数理统计']*5*4 + x['统计软件']*2*2.5 + x['应用回归分析']*3*3 + x['大学英语']*2*3 + x['大学物理']*3*3 + x['离散数学']*3*3)/78.5, axis=1)
# 打印处理后的数据框
print(df)
```
(3)请筛选出不及格同学的行(多条件布尔索引):
```python
import pandas as pd
# 读取Excel文件
df = pd.read_excel('统计学类专业成绩单.xlsx')
# 将缺失值替换为0
df.fillna(0, inplace=True)
# 筛选不及格同学的行
df_fail = df[(df['高等数学']<60) | (df['线性代数']<60) | (df['概率论与数理统计']<60) | (df['统计软件']<60) | (df['应用回归分析']<60) | (df['大学英语']<60) | (df['大学物理']<60) | (df['离散数学']<60)]
# 打印处理后的数据框
print(df_fail)
```
(4)请查看每个班级中,加权平均分在前 5 名的同学,(groupby+apply),把这些行存入一个新的.csv 文件:
```python
import pandas as pd
# 读取Excel文件
df = pd.read_excel('统计学类专业成绩单.xlsx')
# 将缺失值替换为0
df.fillna(0, inplace=True)
# 分组并计算加权平均成绩
df_group = df.groupby('班级').apply(lambda x: x.assign(加权平均成绩=(x['高等数学']*4 + x['线性代数']*4 + x['概率论与数理统计']*5 + x['统计软件']*2 + x['应用回归分析']*3 + x['大学英语']*2 + x['大学物理']*3 + x['离散数学']*3)/26))
# 按班级分组,获取加权平均成绩前5名的同学
df_top5 = df_group.groupby('班级').apply(lambda x: x.nlargest(5, '加权平均成绩'))
# 将结果保存为CSV文件
df_top5.to_csv('加权平均成绩前5名的同学.csv', index=False)
# 打印处理后的数据框
print(df_top5)
```
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是分别存储成交量加权平均价格、最大值和最小值、股票年波动率以及月波动率的工作表名,可以根据需要进行修改。
阅读全文