北京各城区⼆⼿房数据分析+可视化⽬录
提⽰:pandas 是基于NumPy 的⼀种⼯具,该⼯具是为了解决数据分析任务⽽创建的。
1.1 读取数据
import pandas as pd
df = pd.read_csv("⼆⼿房数据.csv",encoding='gbk')
df.head()#查看前5⾏数据
西点图片1.2 查看表格数据描述
df.describe()
⼀共有23677条数据
1.3 查看表格是否有数据缺失
df.isnull().sum()
可以看到电梯有8257条数据缺失yy怎么截图
1.4 查看电梯共有⼏种类型值
月亮的成语
df['电梯'].unique()
可以看到有三种
1.5 缺失值填充
⽤“未知”填充缺失数据
df['电梯'].fillna('未知',inplace=True)
df.isnull().sum()
df['电梯'].unique()
1.6 查看房屋朝向数据
df['朝向'].unique()
朝向数据包含了“西南”和“南西”两个⽅向,将其合并为⼀个⽅向“西南”
df['朝向'] = df['朝向'].place('南西','西南')
df['朝向'].unique()
1.7 统计各城区⼆⼿房数量
g = df.groupby('市区')
num = g.count()['⼩区']
print(type(num))
num1 = list()#把dataframe转换成列表
num1
df['市区'].unique()
⼆、Pyecharts 可视化
2.1 北京各个城区⼆⼿房数量地图分布
Geo绘制地图
优势英文from pyecharts.charts import Geo
from pyecharts import options as opts
c = (
Geo()
.add_schema(maptype='北京',itemstyle_opts=opts.ItemStyleOpts(color='#A60B63',border_color='#FFFF22')) .add(
"",
[list(z) for z in zip(num.keys(),num1)]
)
.t_ries_opts(
label_opts=opts.LabelOpts(is_show=Fal))
.t_global_opts(
visualmap_opts=opts.VisualMapOpts(min_=0,max_=3000),
title_opts=opts.TitleOpts(title="北京各个城区⼆⼿房数量"),
观赏园艺)
)
c = num.keys().tolist()#获取城市
num1 = list()#把dataframe转换成列表
2.2 各城区⼆⼿房数量-平均价格柱状图
df_price = g.mean()['价格(万元)'].round(decimals=2)
df_price
price1 = df_list()
可以看出东城区,西城区和海淀区⼆⼿房平均售价最⾼,均在800万元以上from pyecharts.charts import Bar, Line
from pyecharts.globals import ThemeType
bar = (
Bar(init_opts=opts.InitOpts(width="1700px", height="800px",theme=ThemeType.MACARONS)) .add_xaxis(xaxis_data=c)
.add_yaxis(
ries_name="数量",
y_axis=num1,
夜狂欢category_gap='50%',#设置柱状图柱形宽度
label_opts=opts.LabelOpts(is_show=True),#⽅法1 柱状图上⾯的数字显⽰
)
.extend_axis(
yaxis=opts.AxisOpts(
name="价格",
type_="value",
min_=200,
max_=900,
interval=100,
# axislabel_opts=opts.LabelOpts(formatter="{value} °C"),
)
)
.
t_global_opts(
tooltip_opts=opts.TooltipOpts(
is_show=True, trigger="axis", axis_pointer_type="cross"
),
xaxis_opts=opts.AxisOpts(
type_="category",
用字母表示数优秀教案axispointer_opts=opts.AxisPointerOpts(is_show=True, type_="shadow"),
),
qq帐号服务中心yaxis_opts=opts.AxisOpts(
name="数量",
type_="value",
min_=0,
max_=3000,
interval=500,
#axislabel_opts=opts.LabelOpts(formatter="{value} ml"),
axistick_opts=opts.AxisTickOpts(is_show=True),
#splitline_opts=opts.SplitLineOpts(is_show=True),
),
)
#⽅法⼆.t_ries_opts(label_opts=opts.LabelOpts(is_show=True))#柱状图上⾯的数字显⽰)
line = (
Line()
.
add_xaxis(xaxis_data=c)
.add_yaxis(
ries_name="价格",
yaxis_index=1,
y_axis=price1,
z=10,
label_opts=opts.LabelOpts(is_show=True),#折线图每个转折点上⾯的数字显⽰
)
)
bar.overlap(line).render_notebook()
#或者⽤ bar.overlap(line).render("mixed_bar_and_line.html")