mp.rcParams['font.sans-serif'] = ['SimHei'] mp.rcParams['axes.unicode_minus'] = False house = pd.read_csv('./data/house_information.csv', usecols=range(1, 9), encoding='utf-8', engine='python') # 1.数据清洗 # 将单价的平米去掉,转换为浮点型 house['单价'] = house['单价'].apply(lambda x: float(x.split('/')[0][:-1])) # 将建筑面积的平米去掉,转换为浮点型 house['建筑面积'] = house['建筑面积'].apply(lambda x: ___(1)___(x[:-2])) # 将房屋总价的万去掉,转换为浮点型 house['房屋总价'] = house['房屋总价'].apply(lambda x: float(x[:-1])) print(house) # 查看房屋信息 print(house.info()) # 定义筛选TOPN单价的条件的函数 def house_in_topn(data, xiaoqu): lst = [] for h in data.values: if ___(2)___ in xiaoqu: lst.append(True) else: lst.append(False) return np.array(___(3)___) # 定义画条形图的函数 def bar_plot(label, **kwargs): mp.figure(label) ax = mp.gca() sn.barplot(ax=ax, ___(4)___) mp.title(label) mp.gcf().autofmt_xdate() # 对小区单价进行降序排列,取前15位 districe = house.groupby(by='小区名称').agg({'单价': 'mean'}).___(5)___(by='单价', ascending=False)[:15] print(districe) # 筛选单价排名前15的小区 data = house.___(6)___[house_in_topn(house['小区名称'], list(districe.index))] # 可视化 bar_plot('TOP15小区单价条形图(元/平米)', data=___(7)___, x='小区名称', y='单价', hue='楼层', palette='Set1', ci=None) # 筛选单价排名前10的朝向 direction = house.groupby(by='朝向').agg({'单价': 'mean'}).sort_values(by='单价', ascending=False)[:___(8)___] # 去house数据中筛选单价排名前10的朝向的数据 house_direction = house.loc[house_in_topn(house['朝向'], list(direction.index))] # 绘制朝向条形图 bar_plot('TOP10小区朝向条形图(元/平米)', data=house_direction, x='朝向', y='单价', palette='Set1', ci=None, order=list(direction.index)) # 筛选单价排名前10的户型 layout = house.groupby(by='户型').agg({'单价': 'mean'}).sort_values(by='单价', ascending=False)[:10] house_layout = house.loc[house_in_topn(house['户型'], layout.index)] # 绘制户型条形图 bar_plot('TOP10小区户型条形图(元/平米)', data=house_layout, x='户型', y='单价', palette='Set1', ci=None, order=layout.index) # 绘制装修情况条形图 bar_plot('装修情况条形图', data=house, x='装修', y='单价', ci=None, palette='Set3') # 绘制单价直方图 sn.___(9)___(house['单价']) mp.title('单价直方图', fontsize=16) mp.xlabel('单价', fontsize=12) mp.ylabel('频数', fontsize=12) # 绘制面积密度图 mp.figure('建筑面积密度图') ax = mp.___(10)___ sn.kdeplot(house['建筑面积'], ax=ax) mp.title('建筑面积密度图', fontsize=16) mp.xlabel('建筑面积', fontsize=12) mp.ylabel('频率', fontsize=12) mp.show()
理解问题mp.rcParams['font.sans-serif'] = ['SimHei'] mp.rcParams['axes.unicode_minus'] = False house = pd.read_csv('./data/house_information.csv', usecols=range(1, 9), encoding='utf-8', engine='python') # 1.数据清洗 # 将单价的平米去掉,转换为浮点型 house['单价'] = house['单价'].apply(lambda x: float(x.split('/')[0][:-1])) # 将建筑面积的平米去掉,转换为浮点型 house['建筑面积'] = house['建筑面积'].apply(lambda x: ___(1)___(x[:-2])) # 将房屋总价的万去掉,转换为浮点型 house['房屋总价'] = house['房屋总价'].apply(lambda x: float(x[:-1])) print(house) # 查看房屋信息 print(house.info()) # 定义筛选TOPN单价的条件的函数 def house_in_topn(data, xiaoqu): lst = [] for h in data.values: if ___(2)___ in xiaoqu: lst.append(True) else: lst.append(False) return np.array(___(3)___) # 定义画条形图的函数 def bar_plot(label, **kwargs): mp.figure(label) ax = mp.gca() sn.barplot(ax=ax, ___(4)___) mp.title(label) mp.gcf().autofmt_xdate() # 对小区单价进行降序排列,取前15位 districe = house.groupby(by='小区名称').agg({'单价': 'mean'}).___(5)___(by='单价', ascending=False)[:15] print(districe) # 筛选单价排名前15的小区 data = house.___(6)___[house_in_topn(house['小区名称'], list(districe.index))] # 可视化 bar_plot('TOP15小区单价条形图(元/平米)', data=___(7)___, x='小区名称', y='单价', hue='楼层', palette='Set1', ci=None) # 筛选单价排名前10的朝向 direction = house.groupby(by='朝向').agg({'单价': 'mean'}).sort_values(by='单价', ascending=False)[:___(8)___] # 去house数据中筛选单价排名前10的朝向的数据 house_direction = house.loc[house_in_topn(house['朝向'], list(direction.index))] # 绘制朝向条形图 bar_plot('TOP10小区朝向条形图(元/平米)', data=house_direction, x='朝向', y='单价', palette='Set1', ci=None, order=list(direction.index)) # 筛选单价排名前10的户型 layout = house.groupby(by='户型').agg({'单价': 'mean'}).sort_values(by='单价', ascending=False)[:10] house_layout = house.loc[house_in_topn(house['户型'], layout.index)] # 绘制户型条形图 bar_plot('TOP10小区户型条形图(元/平米)', data=house_layout, x='户型', y='单价', palette='Set1', ci=None, order=layout.index) # 绘制装修情况条形图 bar_plot('装修情况条形图', data=house, x='装修', y='单价', ci=None, palette='Set3') # 绘制单价直方图 sn.___(9)___(house['单价']) mp.title('单价直方图', fontsize=16) mp.xlabel('单价', fontsize=12) mp.ylabel('频数', fontsize=12) # 绘制面积密度图 mp.figure('建筑面积密度图') ax = mp.___(10)___ sn.kdeplot(house['建筑面积'], ax=ax) mp.title('建筑面积密度图', fontsize=16) mp.xlabel('建筑面积', fontsize=12) mp.ylabel('频率', fontsize=12) mp.show()
已完成理解「mp.rcParams['font.sans-serif'] = ['SimHei'] mp.rcParams['axes.unicode_minus'] = False house = pd.read_csv('./data/house_information.csv', usecols=range(1, 9), encoding='utf-8', engine='python') # 1.数据清洗 # 将单价的平米去掉,转换为浮点型 house['单价'] = house['单价'].apply(lambda x: float(x.split('/')[0][:-1])) # 将建筑面积的平米去掉,转换为浮点型 house['建筑面积'] = house['建筑面积'].apply(lambda x: ___(1)___(x[:-2])) # 将房屋总价的万去掉,转换为浮点型 house['房屋总价'] = house['房屋总价'].apply(lambda x: float(x[:-1])) print(house) # 查看房屋信息 print(house.info()) # 定义筛选TOPN单价的条件的函数 def house_in_topn(data, xiaoqu): lst = [] for h in data.values: if ___(2)___ in xiaoqu: lst.append(True) else: lst.append(False) return np.array(___(3)___) # 定义画条形图的函数 def bar_plot(label, **kwargs): mp.figure(label) ax = mp.gca() sn.barplot(ax=ax, ___(4)___) mp.title(label) mp.gcf().autofmt_xdate() # 对小区单价进行降序排列,取前15位 districe = house.groupby(by='小区名称').agg({'单价': 'mean'}).___(5)___(by='单价', ascending=False)[:15] print(districe) # 筛选单价排名前15的小区 data = house.___(6)___[house_in_topn(house['小区名称'], list(districe.index))] # 可视化 bar_plot('TOP15小区单价条形图(元/平米)', data=___(7)___, x='小区名称', y='单价', hue='楼层', palette='Set1', ci=None) # 筛选单价排名前10的朝向 direction = house.groupby(by='朝向').agg({'单价': 'mean'}).sort_values(by='单价', ascending=False)[:___(8)___] # 去house数据中筛选单价排名前10的朝向的数据 house_direction = house.loc[house_in_topn(house['朝向'], list(direction.index))] # 绘制朝向条形图 bar_plot('TOP10小区朝向条形图(元/平米)', data=house_direction, x='朝向', y='单价', palette='Set1', ci=None, order=list(direction.index)) # 筛选单价排名前10的户型 layout = house.groupby(by='户型').agg({'单价': 'mean'}).sort_values(by='单价', ascending=False)[:10] house_layout = house.loc[house_in_topn(house['户型'], layout.index)] # 绘制户型条形图 bar_plot('TOP10小区户型条形图(元/平米)', data=house_layout, x='户型', y='单价', palette='Set1', ci=None, order=layout.index) # 绘制装修情况条形图 bar_plot('装修情况条形图', data=house, x='装修', y='单价', ci=None, palette='Set3') # 绘制单价直方图 sn.___(9)___(house['单价']) mp.title('单价直方图', fontsize=16) mp.xlabel('单价', fontsize=12) mp.ylabel('频数', fontsize=12) # 绘制面积密度图 mp.figure('建筑面积密度图') ax = mp.___(10)___ sn.kdeplot(house['建筑面积'], ax=ax) mp.title('建筑面积密度图', fontsize=16) mp.xlabel('建筑面积', fontsize=12) mp.ylabel('频率', fontsize=12) mp.show()」
展开阅读网页
在这段代码中,我们可以看到几个关键步骤,包括数据清洗、数据筛选、数据可视化等。下面是对代码中每个部分的详细解释:
-
数据清洗:代码中首先对
house
DataFrame进行了数据清洗。具体来说,它将单价、建筑面积和房屋总价的字符串数据转换为浮点型数据。对于单价,它通过split
方法去掉了“平米”单位,然后通过float
函数转换为浮点型数据。对于建筑面积,它去掉了“平米”单位,但具体转换函数未给出,需要填写。对于房屋总价,它去掉了“万”单位,然后转换为浮点型数据。123456 -
筛选TOPN单价的条件的函数:定义了一个名为
house_in_topn
的函数,该函数用于筛选出满足特定条件的数据。函数中有一个未完成的部分,需要填写正确的条件来筛选出小区名称在xiaqu
列表中的行。7 -
画条形图的函数:定义了一个名为
bar_plot
的函数,用于绘制条形图。函数中有几个未完成的部分,包括如何传递数据给barplot
函数,以及如何设置图表的标题。8 -
数据筛选:代码中对
house
DataFrame进行了多次筛选,包括按照单价降序排列并取前15位的小区,筛选单价排名前15的小区,以及筛选单价排名前10的朝向和户型。这些筛选操作使用了groupby
、agg
、sort_values
等Pandas函数。7 -
数据可视化:代码中使用了Seaborn和Matplotlib库来绘制各种图表,包括条形图、直方图和密度图。这些图表用于展示不同小区、朝向、户型的单价分布,以及单价和建筑面积的关系。89
具体到代码中的未完成部分,以下是可能的填写方式:
- 对于建筑面积的转换,可以使用与单价类似的
lambda
表达式,去掉“平米”单位并转换为浮点型数据:lambda x: float(x[:-1])
。 - 在
house_in_topn
函数中,需要填写的条件是h[0]
,即小区名称是否在xiaqu
列表中。 - 在
bar_plot
函数中,需要填写的部分包括传递数据给barplot
函数的参数,以及设置图表标题的参数。 - 在数据筛选部分,需要填写的部分包括如何使用
head
函数取前15位,以及如何使用loc
函数和house_in_topn
函数筛选数据。 - 在数据可视化部分,需要填写的部分包括如何使用Seaborn的
histplot
函数绘制直方图,以及如何使用Matplotlib的gca
函数获取当前坐标轴。
请注意,这些填写方式是基于代码上下文和Python编程知识推测的,实际应用中可能需要根据具体数据和需求进行调整。