python读取csv文件,对不同地区的房屋的每平米单价进行对比分析,并利用python绘制不同地区每平米单价对比条形图
时间: 2024-03-19 21:44:19 浏览: 16
读取CSV文件可以使用Python内置的csv模块。假设CSV文件的第一列是房屋所在地区,第二列是每平米单价,代码如下:
```python
import csv
# 打开CSV文件
with open('house_price.csv', 'r') as f:
# 读取CSV文件内容
reader = csv.reader(f)
# 跳过表头
next(reader)
# 定义字典,用于存储不同地区的每平米单价
price_dict = {}
# 遍历CSV文件每一行
for row in reader:
# 获取地区和每平米单价
area = row[0]
price = float(row[1])
# 如果该地区已存在于字典中,则将该地区的每平米单价加入列表中
if area in price_dict:
price_dict[area].append(price)
# 否则将该地区加入字典,并将该地区的每平米单价初始化为一个列表
else:
price_dict[area] = [price]
```
上述代码将CSV文件中每个地区的每平米单价存储在了一个字典中,每个地区对应的值是一个列表,列表中存储了该地区所有房屋的每平米单价。
接下来,可以使用Matplotlib库绘制不同地区每平米单价的对比条形图。代码如下:
```python
import matplotlib.pyplot as plt
# 定义颜色列表,用于不同地区的条形图颜色区分
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf']
# 遍历字典中的每个地区及其每平米单价列表
for i, (area, prices) in enumerate(price_dict.items()):
# 绘制条形图
plt.bar(area, sum(prices)/len(prices), color=colors[i%len(colors)])
# 添加标签
plt.text(area, sum(prices)/len(prices)*1.01, '%.2f' % (sum(prices)/len(prices)), ha='center', va='bottom')
# 设置x轴标签
plt.xlabel('Area')
# 设置y轴标签
plt.ylabel('Price per square meter')
# 显示图例
plt.legend(price_dict.keys())
# 展示图表
plt.show()
```
上述代码将每个地区的每平米单价取平均值,并绘制了每个地区的条形图,颜色使用了颜色列表中的颜色,每个地区的图例也显示了出来。