综合案例 -- 北京租房数据统计分析

本文通过获取链家北京租房数据,进行了数据清洗与预处理,并详细分析了房源数量、户型分布及平均租金水平,揭示了不同区域的租房市场特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Table of Contents

前言

原始数据请点击
原始数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 设置中文字体
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]

获取数据

file_data = pd.read_csv("./data/链家北京租房数据.csv")
file_data
区域小区名称户型面积(㎡)价格(元/月)
0东城万国城MOMA1室0厅59.11平米10000
1东城北官厅胡同2号院3室0厅56.92平米6000
2东城和平里三区1室1厅40.57平米6900
3东城菊儿胡同2室1厅57.09平米8000
4东城交道口北二条35号院1室1厅42.67平米5500
..................
8218顺义怡馨家园3室1厅114.03平米5500
8219顺义旭辉26街区4房间2卫59平米5000
8220顺义前进花园玉兰苑3室1厅92.41平米5800
8221顺义双裕小区2室1厅71.81平米4200
8222顺义樱花园二区1室1厅35.43平米2700

8223 rows × 5 columns

# 看一看数据的大概情况
file_data.describe()
价格(元/月)
count8223.000000
mean9512.297823
std9186.752612
min566.000000
25%4800.000000
50%6800.000000
75%10000.000000
max150000.000000

数据基本处理

重复值和空值处理

# 重复值
# file_data.duplicated()
#通过观察dataframe的shape来观测结果

file_data = file_data.drop_duplicates()
file_data.shape
(5773, 5)
# 空值处理
file_data = file_data.dropna()
file_data.shape
(5773, 5)

数据转换类型

面积数据类型转换

file_data.head()
区域小区名称户型面积(㎡)价格(元/月)
0东城万国城MOMA1室0厅59.11平米10000
1东城北官厅胡同2号院3室0厅56.92平米6000
2东城和平里三区1室1厅40.57平米6900
3东城菊儿胡同2室1厅57.09平米8000
4东城交道口北二条35号院1室1厅42.67平米5500
# 单个值实现
# 切片取值, 去掉字符串后两位

file_data["面积(㎡)"].values[0][:-2]
'59.11'
# 创建一个空的数组
data_new = np.array([])

data_area = file_data["面积(㎡)"].values

for i in data_area:
        data_new = np.append(data_new, np.array(i[:-2]))

        
# 转换data_new中的数据类型
data_new = data_new.astype(np.float64) 


# 替换
file_data.loc[:, "面积(㎡)"] = data_new
file_data.head()    

区域小区名称户型面积(㎡)价格(元/月)
0东城万国城MOMA1室0厅59.1110000
1东城北官厅胡同2号院3室0厅56.926000
2东城和平里三区1室1厅40.576900
3东城菊儿胡同2室1厅57.098000
4东城交道口北二条35号院1室1厅42.675500

户型表达方式转换

# 取出需要修改的列
house_data = file_data["户型"]

# 创建一个新数组
temp_list = []

# 用repalce方法更改, 并放入新的数组中
for i in house_data:
    # print(i)
    new_info = i.replace("房间", "室")
    temp_list.append(new_info)

# 替换数据表中原来的数据
file_data.loc[:, "户型"] = temp_list
file_data
区域小区名称户型面积(㎡)价格(元/月)
0东城万国城MOMA1室0厅59.1110000
1东城北官厅胡同2号院3室0厅56.926000
2东城和平里三区1室1厅40.576900
3东城菊儿胡同2室1厅57.098000
4东城交道口北二条35号院1室1厅42.675500
..................
8218顺义怡馨家园3室1厅114.035500
8219顺义旭辉26街区4室2卫59.005000
8220顺义前进花园玉兰苑3室1厅92.415800
8221顺义双裕小区2室1厅71.814200
8222顺义樱花园二区1室1厅35.432700

5773 rows × 5 columns

图标分析

房源数量、 位置分布分析

# unique()方法去重
file_data["区域"].unique()
array(['东城', '丰台', '亦庄开发区', '大兴', '房山', '昌平', '朝阳', '海淀', '石景山', '西城',
       '通州', '门头沟', '顺义'], dtype=object)
new_df = pd.DataFrame({"区域":file_data["区域"].unique(),
                       "数量":[0]*13})
new_df
区域数量
0东城0
1丰台0
2亦庄开发区0
3大兴0
4房山0
5昌平0
6朝阳0
7海淀0
8石景山0
9西城0
10通州0
11门头沟0
12顺义0
# 获取每个区域房源数量
# 分组聚合: 按照区域进行分组
#           count()聚合, 统计每个区域房源数量
area_count = file_data.groupby(by="区域").count()

# 将上面的dataframe的取值 赋值数量列
new_df["数量"] = area_count.values

户型数量分析

house_data = file_data["户型"]
house_data.head()
0    1室0厅
1    3室0厅
2    1室1厅
3    2室1厅
4    1室1厅
Name: 户型, dtype: object
def all_house(arr):
    """统计户型的数量"""
    
    # 去重, 转化为了numpy字符串数组
    key = np.unique(arr)
    
    # 创建新字典储存数据
    result = {}
    
    
    for k in key:
        # 判断arr中的每一个值是否与 key中的第一个值相同
        # 并返回bool类型的series
        mask = (arr == k)
        
        # true就保留, false就去除
        arr_new = arr[mask]
        # 获取mask中true的个数
        v = arr_new.size
        
        # 使用k作为索引, arr_new的size作为值
        result[k] = v
        
    return result

house_info = all_house(house_data)
house_info
{'0室0厅': 1,
 '1室0卫': 10,
 '1室0厅': 244,
 '1室1卫': 126,
 '1室1厅': 844,
 '1室2厅': 13,
 '2室0卫': 1,
 '2室0厅': 23,
 '2室1卫': 120,
 '2室1厅': 2249,
 '2室2卫': 22,
 '2室2厅': 265,
 '2室3厅': 1,
 '3室0卫': 3,
 '3室0厅': 12,
 '3室1卫': 92,
 '3室1厅': 766,
 '3室2卫': 48,
 '3室2厅': 489,
 '3室3卫': 1,
 '3室3厅': 10,
 '4室1卫': 15,
 '4室1厅': 58,
 '4室2卫': 24,
 '4室2厅': 191,
 '4室3卫': 5,
 '4室3厅': 9,
 '4室5厅': 2,
 '5室0卫': 1,
 '5室0厅': 1,
 '5室1卫': 3,
 '5室1厅': 7,
 '5室2卫': 7,
 '5室2厅': 49,
 '5室3卫': 3,
 '5室3厅': 24,
 '5室4厅': 1,
 '5室5厅': 1,
 '6室0厅': 1,
 '6室1卫': 1,
 '6室1厅': 1,
 '6室2厅': 5,
 '6室3卫': 2,
 '6室3厅': 6,
 '6室4卫': 2,
 '7室1厅': 1,
 '7室2厅': 2,
 '7室3厅': 3,
 '7室4厅': 1,
 '8室4厅': 2,
 '9室1厅': 2,
 '9室2厅': 1,
 '9室5厅': 2}
# 去掉统计数量较少的值
house_data = dict((key, value) for key, 
                  value in house_info.items() if value > 50)
show_houses = pd.DataFrame({"户型": [x for x in house_data.keys()],
              "数量": [x for x in house_data.values()]})
show_houses
户型数量
01室0厅244
11室1卫126
21室1厅844
32室1卫120
42室1厅2249
52室2厅265
63室1卫92
73室1厅766
83室2厅489
94室1厅58
104室2厅191
# 图形展示房屋类型

house_type = show_houses["户型"]
house_type_num = show_houses["数量"]

plt.barh(range(11), house_type_num)

plt.yticks(range(11), house_type)
plt.xlim(0, 2500)

plt.title("北京市各区域租房数量统计")
plt.xlabel("数量")
plt.ylabel("房屋类型")

# 给每个条上面添加具体数字
for x, y in enumerate(house_type_num):
    # print(x, y)
    plt.text(y+0.5, x-0.2, "%s" %y)

plt.show()

在这里插入图片描述

平均租金分析

df_all = pd.DataFrame({"区域": file_data["区域"].unique(),
              "房租总金额": [0]*13,
              "总面积": [0]*13})
df_all.head()
区域房租总金额总面积
0东城00
1丰台00
2亦庄开发区00
3大兴00
4房山00
# series方式按区域分组价格, 叠加聚合
sum_price = file_data["价格(元/月)"].groupby(file_data["区域"]).sum()

# series方式按区域分组面积, 叠加聚合
sum_area = file_data["面积(㎡)"].groupby(file_data["区域"]).sum()

# 赋值
df_all["房租总金额"] = sum_price.values
df_all["总面积"] = sum_area.values
df_all
区域房租总金额总面积
0东城394555027353.99
1丰台440489350922.79
2亦庄开发区131840015995.53
3大兴228695035884.15
4房山72675015275.41
5昌平252151535972.92
6朝阳20281396166921.72
7海淀727935057210.39
8石景山115650013956.67
9西城563697537141.64
10通州271960046625.23
11门头沟104830020258.20
12顺义219090033668.97
# 计算各个区域每平方米的房租
# round 四舍五入到小数后两位
df_all["每平米租金(元)"] = round(df_all["房租总金额"] / df_all["总面积"], 2)
df_all
区域房租总金额总面积每平米租金(元)
0东城394555027353.99144.24
1丰台440489350922.7986.50
2亦庄开发区131840015995.5382.42
3大兴228695035884.1563.73
4房山72675015275.4147.58
5昌平252151535972.9270.09
6朝阳20281396166921.72121.50
7海淀727935057210.39127.24
8石景山115650013956.6782.86
9西城563697537141.64151.77
10通州271960046625.2358.33
11门头沟104830020258.2051.75
12顺义219090033668.9765.07
# 合并两个表格, 默认内拼接模式
df_merge = pd.merge(new_df, df_all)
# 降序排列
df_merge.sort_values(by="每平米租金(元)", ascending=False)
区域数量房租总金额总面积每平米租金(元)
9西城442563697537141.64151.77
0东城282394555027353.99144.24
7海淀605727935057210.39127.24
6朝阳159720281396166921.72121.50
1丰台577440489350922.7986.50
8石景山175115650013956.6782.86
2亦庄开发区147131840015995.5382.42
5昌平347252151535972.9270.09
12顺义297219090033668.9765.07
3大兴362228695035884.1563.73
10通州477271960046625.2358.33
11门头沟285104830020258.2051.75
4房山18072675015275.4147.58
# 图形可视化

num = df_merge["数量"]
price = df_merge["每平米租金(元)"]
lx = df_merge["区域"]
l = [i for i in range(13)]

# 创建画布, 承接对象
fig = plt.figure(figsize=(10, 8), dpi=100)

# 显示折线图
ax1 = fig.add_subplot(111) # 把画布分为1*1,放在位置1
ax1.plot(l, price, "or-", label="价格")

# 在for循环里enumerate()函数是一个枚举函数,
# 可用于将一个可遍历的数据对象(如列表、元组或字符串)
# 组合为一个索引序列,同时列出数据和数据下标。

# zip()将可遍历的俩数据结构对应元素打包成一个个元组返回
for i, (_x, _y) in enumerate(zip(l, price)):

    
    # 传入x, y的坐标(数据值), 以及需要标注的值
    plt.text(_x+0.2, _y, price[i]) 
    
ax1.set_ylim([0, 160])   
ax1.set_ylabel("价格")
plt.legend(loc="upper right")

# 显示条形图
ax2 = ax1.twinx()
plt.bar(l, num, label="数量", alpha=0.2, color="green")
ax2.set_ylabel("数量")
plt.legend(loc="upper left")
plt.xticks(l, lx)


plt.show()

在这里插入图片描述

# 查看房屋的最大面积和最小面积
print('房屋最大面积是%d平米'%(file_data['面积(㎡)'].max()))
print('房屋最小面积是%d平米'%(file_data['面积(㎡)'].min()))

# 查看房租的最高值和最小值
print('房租最高价格为每月%d元'%(file_data['价格(元/月)'].max()))
print('房屋最低价格为每月%d元'%(file_data['价格(元/月)'].min()))
房屋最大面积是1133平米
房屋最小面积是11平米
房租最高价格为每月150000元
房屋最低价格为每月566元
# 面积划分
area_divide = [1, 30, 50, 70, 90, 120, 140, 160, 1200]
area_cut = pd.cut(list(file_data["面积(㎡)"]), area_divide)
area_cut_num = area_cut.describe()
area_cut_num
countsfreqs
categories
(1, 30]410.007102
(30, 50]7100.122986
(50, 70]15660.271263
(70, 90]10940.189503
(90, 120]10820.187424
(120, 140]3810.065997
(140, 160]2740.047462
(160, 1200]6250.108263
# 图像可视化
area_per = (area_cut_num["freqs"].values)*100

labels  = ['30平米以下', '30-50平米', '50-70平米', '70-90平米',
'90-120平米','120-140平米','140-160平米','160平米以上']

plt.figure(figsize=(15, 8), dpi=100)


plt.pie(x=area_per, labels=labels, autopct="%.2f %%")


plt.legend()
plt.show()

在这里插入图片描述

#!/usr/bin/env python
# coding: utf-8

# <h1>Table of Contents<span class="tocSkip"></span></h1>
# <div class="toc"><ul class="toc-item"><li><span><a href="#获取数据" data-toc-modified-id="获取数据-1"><span class="toc-item-num">1&nbsp;&nbsp;</span>获取数据</a></span></li><li><span><a href="#数据基本处理" data-toc-modified-id="数据基本处理-2"><span class="toc-item-num">2&nbsp;&nbsp;</span>数据基本处理</a></span><ul class="toc-item"><li><span><a href="#重复值和空值处理" data-toc-modified-id="重复值和空值处理-2.1"><span class="toc-item-num">2.1&nbsp;&nbsp;</span>重复值和空值处理</a></span></li><li><span><a href="#数据转换类型" data-toc-modified-id="数据转换类型-2.2"><span class="toc-item-num">2.2&nbsp;&nbsp;</span>数据转换类型</a></span><ul class="toc-item"><li><span><a href="#面积数据类型转换" data-toc-modified-id="面积数据类型转换-2.2.1"><span class="toc-item-num">2.2.1&nbsp;&nbsp;</span>面积数据类型转换</a></span></li><li><span><a href="#户型表达方式转换" data-toc-modified-id="户型表达方式转换-2.2.2"><span class="toc-item-num">2.2.2&nbsp;&nbsp;</span>户型表达方式转换</a></span></li></ul></li></ul></li><li><span><a href="#图标分析" data-toc-modified-id="图标分析-3"><span class="toc-item-num">3&nbsp;&nbsp;</span>图标分析</a></span><ul class="toc-item"><li><span><a href="#房源数量、-位置分布分析" data-toc-modified-id="房源数量、-位置分布分析-3.1"><span class="toc-item-num">3.1&nbsp;&nbsp;</span>房源数量、 位置分布分析</a></span></li><li><span><a href="#户型数量分析" data-toc-modified-id="户型数量分析-3.2"><span class="toc-item-num">3.2&nbsp;&nbsp;</span>户型数量分析</a></span></li><li><span><a href="#平均租金分析" data-toc-modified-id="平均租金分析-3.3"><span class="toc-item-num">3.3&nbsp;&nbsp;</span>平均租金分析</a></span></li></ul></li></ul></div>

# In[576]:


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 设置中文字体
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]


# # 获取数据

# In[577]:


file_data = pd.read_csv("")
file_data


# In[578]:


# 看一看数据的大概情况
file_data.describe()


# # 数据基本处理

# ## 重复值和空值处理

# In[579]:


# 重复值
# file_data.duplicated()
#通过观察dataframe的shape来观测结果

file_data = file_data.drop_duplicates()
file_data.shape


# In[580]:


# 空值处理
file_data = file_data.dropna()
file_data.shape


# ## 数据转换类型

# ### 面积数据类型转换

# In[581]:


file_data.head()


# In[582]:


# 单个值实现
# 切片取值, 去掉字符串后两位

file_data["面积(㎡)"].values[0][:-2]


# In[583]:


# 创建一个空的数组
data_new = np.array([])

data_area = file_data["面积(㎡)"].values

for i in data_area:
        data_new = np.append(data_new, np.array(i[:-2]))

        
# 转换data_new中的数据类型
data_new = data_new.astype(np.float64) 


# 替换
file_data.loc[:, "面积(㎡)"] = data_new
file_data.head()    


# ### 户型表达方式转换

# In[584]:


# 取出需要修改的列
house_data = file_data["户型"]

# 创建一个新数组
temp_list = []

# 用repalce方法更改, 并放入新的数组中
for i in house_data:
    # print(i)
    new_info = i.replace("房间", "室")
    temp_list.append(new_info)

# 替换数据表中原来的数据
file_data.loc[:, "户型"] = temp_list
file_data


# # 图标分析

# ## 房源数量、 位置分布分析

# In[585]:


# unique()方法去重
file_data["区域"].unique()


# In[586]:


new_df = pd.DataFrame({"区域":file_data["区域"].unique(),
                       "数量":[0]*13})
new_df


# In[587]:


# 获取每个区域房源数量
# 分组聚合: 按照区域进行分组
#           count()聚合, 统计每个区域房源数量
area_count = file_data.groupby(by="区域").count()

# 将上面的dataframe的取值 赋值数量列
new_df["数量"] = area_count.values


# ## 户型数量分析

# In[588]:


house_data = file_data["户型"]
house_data.head()


# In[589]:


def all_house(arr):
    """统计户型的数量"""
    
    # 去重, 转化为了numpy字符串数组
    key = np.unique(arr)
    
    # 创建新字典储存数据
    result = {}
    
    
    for k in key:
        # 判断arr中的每一个值是否与 key中的第一个值相同
        # 并返回bool类型的series
        mask = (arr == k)
        
        # true就保留, false就去除
        arr_new = arr[mask]
        # 获取mask中true的个数
        v = arr_new.size
        
        # 使用k作为索引, arr_new的size作为值
        result[k] = v
        
    return result

house_info = all_house(house_data)
house_info


# In[590]:


# 去掉统计数量较少的值
house_data = dict((key, value) for key, 
                  value in house_info.items() if value > 50)


# In[591]:


show_houses = pd.DataFrame({"户型": [x for x in house_data.keys()],
              "数量": [x for x in house_data.values()]})
show_houses


# In[592]:


# 图形展示房屋类型

house_type = show_houses["户型"]
house_type_num = show_houses["数量"]

plt.barh(range(11), house_type_num)

plt.yticks(range(11), house_type)
plt.xlim(0, 2500)

plt.title("北京市各区域租房数量统计")
plt.xlabel("数量")
plt.ylabel("房屋类型")

# 给每个条上面添加具体数字
for x, y in enumerate(house_type_num):
    # print(x, y)
    plt.text(y+0.5, x-0.2, "%s" %y)

plt.show()


# ## 平均租金分析

# In[593]:


df_all = pd.DataFrame({"区域": file_data["区域"].unique(),
              "房租总金额": [0]*13,
              "总面积": [0]*13})
df_all.head()


# In[594]:


# series方式按区域分组价格, 叠加聚合
sum_price = file_data["价格(元/月)"].groupby(file_data["区域"]).sum()

# series方式按区域分组面积, 叠加聚合
sum_area = file_data["面积(㎡)"].groupby(file_data["区域"]).sum()

# 赋值
df_all["房租总金额"] = sum_price.values
df_all["总面积"] = sum_area.values
df_all


# In[595]:


# 计算各个区域每平方米的房租
# round 四舍五入到小数后两位
df_all["每平米租金(元)"] = round(df_all["房租总金额"] / df_all["总面积"], 2)
df_all


# In[596]:


# 合并两个表格, 默认内拼接模式
df_merge = pd.merge(new_df, df_all)
# 降序排列
df_merge.sort_values(by="每平米租金(元)", ascending=False)


# In[597]:


# 图形可视化

num = df_merge["数量"]
price = df_merge["每平米租金(元)"]
lx = df_merge["区域"]
l = [i for i in range(13)]

# 创建画布, 承接对象
fig = plt.figure(figsize=(10, 8), dpi=100)

# 显示折线图
ax1 = fig.add_subplot(111) # 把画布分为1*1,放在位置1
ax1.plot(l, price, "or-", label="价格")

# 在for循环里enumerate()函数是一个枚举函数,
# 可用于将一个可遍历的数据对象(如列表、元组或字符串)
# 组合为一个索引序列,同时列出数据和数据下标。

# zip()将可遍历的俩数据结构对应元素打包成一个个元组返回
for i, (_x, _y) in enumerate(zip(l, price)):

    
    # 传入x, y的坐标(数据值), 以及需要标注的值
    plt.text(_x+0.2, _y, price[i]) 
    
ax1.set_ylim([0, 160])   
ax1.set_ylabel("价格")
plt.legend(loc="upper right")

# 显示条形图
ax2 = ax1.twinx()
plt.bar(l, num, label="数量", alpha=0.2, color="green")
ax2.set_ylabel("数量")
plt.legend(loc="upper left")
plt.xticks(l, lx)


plt.show()


# In[598]:


# 查看房屋的最大面积和最小面积
print('房屋最大面积是%d平米'%(file_data['面积(㎡)'].max()))
print('房屋最小面积是%d平米'%(file_data['面积(㎡)'].min()))

# 查看房租的最高值和最小值
print('房租最高价格为每月%d元'%(file_data['价格(元/月)'].max()))
print('房屋最低价格为每月%d元'%(file_data['价格(元/月)'].min()))


# In[599]:


# 面积划分
area_divide = [1, 30, 50, 70, 90, 120, 140, 160, 1200]
area_cut = pd.cut(list(file_data["面积(㎡)"]), area_divide)
area_cut_num = area_cut.describe()
area_cut_num


# In[600]:


# 图像可视化
area_per = (area_cut_num["freqs"].values)*100

labels  = ['30平米以下', '30-50平米', '50-70平米', '70-90平米',
'90-120平米','120-140平米','140-160平米','160平米以上']

plt.figure(figsize=(15, 8), dpi=100)


plt.pie(x=area_per, labels=labels, autopct="%.2f %%")


plt.legend()
plt.show()


# 1. 数据集说明 这是一份北京租房数据,总计7000 多 条记录,分为 8 个同样结构的 CSV 数据文件。 # 2. 数据处理 首先通过 pandas 将这些数据文件合并到一起,然后进行数据处理,最后将清洗好的数据写到 sqlite 。 # 3.数据分析可视化 ## 3.1 整体情况 该数据集总共有 6024 个房源信息,平均每平米的租金为 169 元,每套房源的平均出租面积为 15.68 平米。 ## 3.2 地区分析 房源数量分布情况如下,可以看到朝阳和通州这两个地区的房源数量要远大于其它区,说明这两个地方的租赁市场比较活跃,人员流动和人口密度可能也比较大。 房租最贵的小区 TOP 10。半壁街南路 1 号院的房租最高,达到 596 元/平米,是平均值 169 元/平米的 **3** 倍。 从户型的房源数量分布来看,主要集中在 2-4 室的户型。之前也分析了,每套房源的平均出租面积为 15.68 平米,可见大部分房源都是合租,毕竟房租那么贵,生活成本太高了。 国家规定楼层 7 层以上需要装电梯,依据这个规定,我们根据楼层数来判断房源是否有电梯。 从下图可以看到,电梯房的房源数量比较多,毕竟楼层高,建的房子多,此外,电梯房平均每平米的租金也要比非电梯房贵 10 块钱。 在区分出电梯房之后,我们再引入楼层的纬度进行分析。 从租金上看,不管是电梯房还是非电梯房,低楼层的租金都会比较贵一些。因为北京地处北方,天气较干燥,不会有回南天,而且低楼层出行较为方便。电梯房的高楼层,租金也会比较贵,这大概是因为高楼层的风景较好。 > 南方天气潮湿,在春天的时候,有时会出现 回南天 这一气象,导致低楼层会出现地板、墙壁渗水,所以在南方一般都不爱租低层。 从房源数量上看,非电梯房的高层房源最多,低层房源最少。说明非电梯房的高层房源不容易租出去,这点在租金上也有所体现。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

popcorn_min

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值