pandas 分组取中位数
时间: 2023-07-17 08:01:16 浏览: 385
要在 pandas 中进行分组并取中位数,可以使用 `groupby()` 和 `median()` 方法。以下是一个示例:
```python
import pandas as pd
# 创建一个示例数据集
data = {'Group': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
'Value': [1, 2, 3, 4, 5, 6, 7]}
df = pd.DataFrame(data)
# 按照 'Group' 列进行分组并计算中位数
median_values = df.groupby('Group')['Value'].median()
print(median_values)
```
输出结果为:
```
Group
A 1.5
B 4.0
C 6.5
Name: Value, dtype: float64
```
这里首先创建了一个示例的 DataFrame,其中包含一个 'Group' 列和一个 'Value' 列。然后,使用 `groupby('Group')` 将数据按照 'Group' 列进行分组。最后,使用 `median()` 方法计算每个分组的中位数。
相关问题
pythopython先对字段分组求众数,若多个众数返回中位数,没有则返回平均数 n先对字段分组求众数,若多个众数返回中位数,没有则返回平均数
Python中的pandas库提供了一种方便的方式来处理数据分组并计算各种统计量,包括众数、中位数和平均数。如果你有一个DataFrame或Series,并想要对其中某一列进行操作,可以这样做:
```python
import pandas as pd
# 假设df是一个DataFrame,你想对列'my_column'进行分析
grouped = df.groupby('my_field')
# 对'group_column'求众数
mode_values = grouped['my_column'].mode()
# 如果有多个众数,则取中位数,如果没有则取平均值
if len(mode_values) > 1:
median_value = grouped['my_column'].median()
else:
mean_value = grouped['my_column'].mean()
# 如果有多个众数且没有直接的中位数,你可以选择其中一个作为代表
result = mode_values.median() if median_value is not None else mean_value.iloc[0]
result
```
在这个例子中,`mode()`函数用于获取众数,如果有多个,会返回一个Series,然后我们检查其长度决定是否需要进一步计算中位数或平均数。
设计可复制的Python程序代码实现:现有一第二列为瞬时车速csv数据表格,先按照每20行为一组,计算其每组的jerk值,并取jerk的中位数,按照中位数为中心,将这些组再次分为两组,分别输出这两组的未分组时的原数据,输出为csv格式。
好的,根据您的要求,我为您编写了以下Python程序代码:
```python
import pandas as pd
import numpy as np
# 读取csv文件
df = pd.read_csv('data.csv')
# 每20行为一组,计算jerk的中位数
median_jerk = df['瞬时车速'].rolling(window=20).apply(lambda x: x.diff().diff().median(), raw=True).dropna()
# 将中位数作为分组依据,将数据分为两组
group_id = np.digitize(df['瞬时车速'], median_jerk)
# 分别输出两组数据到csv文件
group1 = df[group_id == 1]
group1.to_csv('group1.csv', index=False)
group2 = df[group_id == 2]
group2.to_csv('group2.csv', index=False)
```
请注意,这是一个可复制的Python程序代码,您可以将其复制到您的项目中并运行。同时,根据您的数据文件名和路径,您需要将代码中的`data.csv`、`group1.csv`和`group2.csv`分别替换为您的实际文件名和路径。
阅读全文