开发工具
python版本:Python 3.6.1
python开发工具:JetBrains PyCharm 2018.3.6 x64
第三方库:pandas ;matplotlib ;seaborn
数据内容
实现代码
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
sns.set_style({'font.sans-serif': ['simhei', 'Arial']})
lianjia_df = pd.read_csv('lianjia.csv')
# 添加房屋均价
df = lianjia_df.copy()
df['PerPrice'] = round(lianjia_df['Price'] / lianjia_df['Size'], 2)
# 重新摆放列位置
columns = ['Region', 'District', 'Garden', 'Layout', 'Floor', 'Year', 'Size', 'Elevator', 'Direction', 'Renovation',
'PerPrice', 'Price']
df = pd.DataFrame(df, columns=columns)
f, [ax1, ax2] = plt.subplots(1, 2, figsize=(20, 10))
sns.countplot(df['Elevator'], ax=ax1)
ax1.set_title('有无电梯数量对比', fontsize=15)
ax1.set_xlabel('是否有电梯')
ax1.set_ylabel('数量')
sns.barplot(x='Elevator', y='Price', data=df, ax=ax2)
ax2.set_title('有无电梯房价对比', fontsize=15)
ax2.set_xlabel('是否有电梯')
ax2.set_ylabel('总价')
plt.show()
运行效果
从第一个电梯和数量关系图中可以看到,在X轴中有无电梯有三个异常数据,毛坯,精装和简装,需要进行一下数据处理
从第二个电梯与总价图中可以看到,有电梯的价格要高于无电梯的价格
处理异常数据
先判断电梯信息缺失值的数量,在对缺失值进行有无电梯的填充
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
sns.set_style({'font.sans-serif': ['simhei', 'Arial']})
lianjia_df = pd.read_csv('lianjia.csv')
# 添加房屋均价
df = lianjia_df.copy()
df['PerPrice'] = round(lianjia_df['Price'] / lianjia_df['Size'], 2)
# 重新摆放列位置
columns = ['Region', 'District', 'Garden', 'Layout', 'Floor', 'Year', 'Size', 'Elevator', 'Direction', 'Renovation',
'PerPrice', 'Price']
df = pd.DataFrame(df, columns=columns)
# 查询是否有缺失值
misn = len(df.loc[(df['Elevator'].isnull()), 'Elevator'])
print('缺失值的数量是: ', misn)
print(df['Elevator'].value_counts())
df['Elevator'] = df.loc[(df['Elevator'] == '有电梯') | (df['Renovation'] == '无电梯'), 'Elevator']
# 填补Elevator缺失值
df.loc[(df['Floor'] > 6) & (df['Elevator'].isnull()), 'Elevator'] = '有电梯'
df.loc[(df['Floor'] <= 6) & (df['Elevator'].isnull()), 'Elevator'] = '无电梯'
f, [ax1, ax2] = plt.subplots(1, 2, figsize=(20, 10))
sns.countplot(df['Elevator'], ax=ax1)
ax1.set_title('有无电梯数量对比', fontsize=15)
ax1.set_xlabel('是否有电梯')
ax1.set_ylabel('数量')
sns.barplot(x='Elevator', y='Price', data=df, ax=ax2)
ax2.set_title('有无电梯房价对比', fontsize=15)
ax2.set_xlabel('是否有电梯')
ax2.set_ylabel('总价')
plt.show()
优化异常数据运行结果
优化后异常数据可视化时就剔除掉了,对比有异常数据的图片
10000条二手房信息下载地址
https://url71.ctfile.com/f/13238771-530323628-1950bb
(访问密码:8835)
总结
这里主要运用了python的进行数据分析时,注意从图中分析异常数据,在对相关数据进行过滤掉