用python将不同的price按照area的值分组,并找出price的中位数
时间: 2023-09-14 09:05:53 浏览: 114
查找中位数
### 回答1:
假设有一个包含房屋面积和价格的列表data,可以使用pandas库来完成分组和中位数的计算:
```python
import pandas as pd
# 构造数据
data = [(100, 200), (120, 300), (80, 150), (90, 180), (110, 280), (130, 320)]
# 转换为pandas的DataFrame对象
df = pd.DataFrame(data, columns=['area', 'price'])
# 按照area分组,计算price的中位数
result = df.groupby('area')['price'].median()
print(result)
```
运行结果为:
```
area
80 150.0
90 180.0
100 200.0
110 280.0
120 300.0
130 320.0
Name: price, dtype: float64
```
可以看到,结果按照面积从小到大排序,每个面积对应一个价格的中位数。如果要按照价格从小到大排序,可以在groupby函数中添加sort_values参数:
```python
result = df.groupby('area')['price'].median().sort_values()
print(result)
```
运行结果为:
```
area
80 150.0
90 180.0
100 200.0
110 280.0
120 300.0
130 320.0
Name: price, dtype: float64
```
### 回答2:
要按照房屋面积的值将不同的价格分组,并找出价格的中位数,可以使用Python的pandas库来实现。
首先,将数据导入到pandas的DataFrame中。假设房屋的价格数据存储在一个名为data的CSV文件中,包含两列:price(价格)和area(面积)。
```python
import pandas as pd
# 导入数据到DataFrame
data = pd.read_csv('data.csv')
```
接下来,使用pandas的groupby函数按照面积(area)进行分组,并计算每组的中位数。
```python
# 按照面积分组,并计算价格的中位数
grouped_data = data.groupby('area')['price'].median()
```
以上代码将按照面积分组,并计算每组价格的中位数,结果存储在grouped_data中。
最后,可以打印分组结果和价格的中位数。
```python
# 打印分组结果和价格的中位数
print(grouped_data)
```
完整的代码如下:
```python
import pandas as pd
# 导入数据到DataFrame
data = pd.read_csv('data.csv')
# 按照面积分组,并计算价格的中位数
grouped_data = data.groupby('area')['price'].median()
# 打印分组结果和价格的中位数
print(grouped_data)
```
执行以上代码,将输出按照面积分组的价格中位数。
### 回答3:
要用Python将不同的price按照area的值分组并找出price的中位数,可以采用以下步骤:
1. 创建一个空字典,用于存储按照area分组后的price列表。
2. 遍历price和area两个列表,将对应的price和area值匹配并分组。
3. 判断当前的area是否已经在字典的键中,如果存在,则将对应的price添加到该键对应的列表中;若不存在,则创建该键,并将price添加到新建的列表中。
4. 遍历字典的值,即各个分组的price列表,对每个列表进行排序,并计算中位数。
5. 将计算出的中位数存储到新的字典中,以area为键,中位数为值。
6. 输出最终的分组和中位数结果。
下面是示例代码:
```python
import statistics
price = [100, 200, 150, 300, 250, 180] # 价格列表
area = [1, 1, 2, 2, 3, 3] # 面积列表
grouped_prices = {} # 分组后的价格字典
# 将price按照area分组
for i in range(len(price)):
current_area = area[i]
current_price = price[i]
if current_area in grouped_prices:
grouped_prices[current_area].append(current_price)
else:
grouped_prices[current_area] = [current_price]
medians = {} # 每个分组的中位数字典
# 计算每个分组的中位数
for area, prices in grouped_prices.items():
sorted_prices = sorted(prices)
median = statistics.median(sorted_prices)
medians[area] = median
print("按照面积分组后的价格为:")
for area, prices in grouped_prices.items():
print(f"面积{area}: {prices}")
print("每个分组的中位数为:")
for area, median in medians.items():
print(f"面积{area}的中位数: {median}")
```
这样,程序就能对price进行分组并计算出每个分组的中位数。输出的结果将展示按照area分组后的价格和每个分组的中位数。
阅读全文