import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
path='F:/python/从零开始学python网络爬虫/链家网/lianjia-3.xls'
lj=pd.read_excel(path)
''' 对整体数据预览,做个大概统计 '''
print(lj.head())
print(lj.tail())
print(lj.columns)
print(lj.index)
print(lj.values)
print(lj.describe())
print(lj[['面积(平方)','元每平方','价格(万)']])
print(lj[5:9])
print(lj.duplicated())
print(lj.drop_duplicates())
''' 单独对价格(万)分析,平均值,排序 散点图,价格区间-数量直方图 '''
print(lj['价格(万)'])
print(lj['价格(万)'].mean())
print(lj['价格(万)'].max())
print(lj['价格(万)'].idxmax())
print(lj.iloc[644])
print(lj['价格(万)'].min())
print(lj['价格(万)'].idxmin())
print(lj.iloc[579])
print(lj['价格(万)'].count())
print(lj['价格(万)'].value_counts())
print(lj['价格(万)'].sort_values())
print(lj.sort_values(by='价格(万)'))
print(lj['价格(万)'].sort_values(ascending=False))
print(lj['价格(万)'][lj['价格(万)']==1620])
print(lj[lj['价格(万)']==1620])
a=lj['价格(万)']
plt.scatter(np.arange(1197),a[a<3000].values,s=2,c='r',label='价格(万)')
plt.axhline(200,color='k',alpha=0.4)
plt.axhline(400,color='k',alpha=0.4)
plt.axhline(600,color='k',alpha=0.4)
plt.xlim([0,1200])
plt.yticks([0,200,400,600,800,1000,1500,2000,2500,3000])
plt.xlabel('索引')
plt.ylabel('价格(万)')
plt.title('价格(万)散点图')
plt.legend(loc='best')
fig=plt.figure()
ax=fig.add_subplot(111)
a[a<1500].hist(bins=20,color='g')
ax.set_xticks([100,200,300,400,500,600,700,800,900,1000,1500])
plt.xlabel('价格(万)')
plt.ylabel('数量')
plt.title('不同区间价格(万)数量直方图')
plt.legend(loc='best')
''' 单独对面积每平方分析,均值,最大最小值,排序 元每平方散点图,元每平方价格区间-价格数量直方图 '''
print(lj['元每平方'])
print(lj['元每平方'].mean())
print(lj['元每平方'].max())
print(lj['元每平方'].idxmax())
print(lj.iloc[184])
print(lj['元每平方'].min())
print(lj['元每平方'].idxmin())
print(lj.iloc[193])
print(lj['元每平方'].count())
print(lj['元每平方'].value_counts())
print(lj['元每平方'].sort_values())
print(lj.sort_values(by='元每平方').head(10))
print(lj.sort_values(by='元每平方',ascending=False).head(10))
print(lj['元每平方'][lj['元每平方']==83333])
print(lj[lj['元每平方']==83333])
b=lj['元每平方']
fig=plt.figure()
ax=fig.add_subplot(111)
plt.scatter(np.arange(1200),b.values,s=4,c='r',label='元每平方')
plt.axhline(30000,color='k',alpha=0.5)
plt.axhline(40000,color='k',alpha=0.5)
plt.axhline(60000,color='k',alpha=0.5)
plt.axhline(80000,color='k',alpha=0.5)
plt.xlim([0,1200])
plt.xlabel('索引')
plt.ylabel('元每平方')
plt.title('元每平方价格散点图')
plt.legend(loc='best')
fig=plt.figure()
ax=fig.add_subplot(111)
b.hist(bins=20,color='g')
ax.set_xticks([30000,40000,50000,60000,70000,80000,90000,100000,110000,120000,130000])
ax.set_xticklabels(['3万','4万','5万','6万','7万','8万','9万','10万','11万','12万','13万'],rotation=30)
plt.xlabel('元每平方')
plt.ylabel('数量')
plt.title('元每平方价格区间-价格数量直方图')
plt.legend(loc='best')
''' 对地区及不同地区出售二手房数量统计分析 '''
print(lj['地区'])
print(lj['地区'].value_counts())
c=lj['地区'].value_counts()
fig=plt.figure()
ax=fig.add_subplot(111)
rect=c.plot(kind='bar',color='y')
plt.xlabel('地区')
plt.ylabel('数量')
plt.title('不同地区出售二手房数量柱状图')
fig=plt.figure()
ax=fig.add_subplot(111)
x=np.arange(14)
y=c.values
rect=ax.bar(x,y)
for rec in rect:
xx=rec.get_x()
hh=rec.get_height()
ax.text(xx+0.05,1.02*hh,str(int(hh)))
ax.set_xticks(x)
ax.set_xticklabels(c.index,rotation=30)
ax.set_xlabel('地区')
ax.set_ylabel('数量')
ax.set_title('不同地区出售二手房数量柱状图')
''' 单独对二手房面积统计分析,平均值,最大最小值,排序, 面积散点图,面积区间-二手房数量直方图 '''
print(lj['面积(平方)'])
print(lj['面积(平方)'].mean())
print(lj['面积(平方)'].max())
print(lj['面积(平方)'].idxmax())
print(lj.iloc[644])
print(lj['面积(平方)'].min())
print(lj['面积(平方)'].idxmin())
print(lj.iloc[1026])
print(lj['面积(平方)'].count())
print(lj['面积(平方)'].value_counts())
print(lj['面积(平方)'].sort_values())
print(lj['面积(平方)'][lj['面积(平方)']==44])
print(lj[lj['面积(平方)']==44])
d=lj['面积(平方)']
fig=plt.figure()
ax=fig.add_subplot(111)
plt.scatter(np.arange(1200),d.values,s=4,c='r',label='面积(平方)')
plt.axhline(25,color='k',alpha=0.5)
plt.xlim([0,1200])
plt.ylim([0,400])
plt.xlabel('索引')
plt.ylabel('面积(平方)')
plt.title('二手房面积散点图')
plt.grid(True)
plt.legend(loc='best')
fig=plt.figure()
ax=fig.add_subplot(111)
d[d<350].hist(bins=30,color='g')
ax.set_xticks([25,50,75,100,125,150,175,200,250,300,350])
plt.axvline(40,color='k',alpha=0.4)
plt.axvline(70,color='k',alpha=0.4)
plt.xlabel('面积(平方)')
plt.ylabel('数量')
plt.title('二手房面积-数量直方图')
plt.legend(loc='best')
''' 面积与总价格多项式拟合曲线 '''
e=lj[lj['面积(平方)']<250]
x=e['面积(平方)']
y=e['价格(万)']
z1 = np.polyfit(x, y, 2)
p1 = np.poly1d(z1)
x1=np.linspace(x.min(),x.max(),1000)
pp1=p1(x1)
fig=plt.figure()
ax=fig.add_subplot(111)
plt.scatter(x,y,color='b',label='散点图',s=1,alpha=0.5)
plt.plot(x1,pp1,color='k',label='拟合图')
plt.xlabel('面积(平方)')
plt.ylabel('价格(万)')
plt.title('面积与总价格多项式拟合曲线')
plt.legend(loc='best')
''' 各地区价格、数量统计 '''
f=lj[['价格(万)','地区']]
total=[]
diqus=['浦东','杨浦','徐汇','闵行','宝山','普陀','长宁','闸北','虹口','黄浦','松江','静安','嘉定','青浦']
for i in diqus:
diqu=f[f['地区']==i]['价格(万)']
shuliang=len(diqu)
zuida=diqu.max()
zuixiao=diqu.min()
pingjun=int(diqu.mean())
total.append({'地区':i,'数量(套)':shuliang,'最大(万)':zuida,'最小(万)':zuixiao,'平均(万)':pingjun})
print(total)
diqu_jiage=pd.DataFrame(total)
qudiqu=diqu_jiage.iloc[:,1:5].values
gediqu=pd.DataFrame(qudiqu,index=diqus,columns=['平均(万)','数量(套)','最大(万)','最小(万)'])
gediqu.plot()
fig=plt.figure()
ax=fig.add_subplot(111)
gediqu['平均(万)'].plot(xticks=range(14),style='go-',label='均价(万)')
ax.set_xticklabels(diqus,rotation=30)
ax.set_xlabel('地区')
ax.set_ylabel('价格(万)')
ax.set_title('不同地区-价格(万)')
ax.legend(loc='best')
g=lj[['元每平方','地区']]
total2=[]
diqus2=['浦东','杨浦','徐汇','闵行','宝山','普陀','长宁','闸北','虹口','黄浦','松江','静安','嘉定','青浦']
for ii in diqus2:
diqu2=g[g['地区']==ii]['元每平方']
pingjun2=int(diqu2.mean())
total2.append({'地区':ii,'平均元每平方':pingjun2})
print(total2)
diqu_yuan=pd.DataFrame(total2)
fig=plt.figure()
ax=fig.add_subplot(111)
diqu_yuan['平均元每平方'].plot(xticks=range(14),style='bo-',label='元每平方')
ax.set_xticklabels(diqus2,rotation=30)
ax.set_xlabel('地区')
ax.set_ylabel('平均元每平方')
ax.set_title('不同地区-平均元每平方')
ax.legend(loc='best')