Matplotlib的优点不包含以下那个选项?
A、功能全
B、可定制性好
C、应用广泛
D、界面可交互
2、新兴数据可视化工具不包含以下那个选项?
A、Seaborn
B、numpy
C、Matplotlib
D、Pandas Visualization
答案:D、B
任务描述:
本关任务:分析 Airbnb 房源数据并挖掘规律。
相关知识:
为了完成本关任务,你需要掌握:1. 如何使用 pandas ;2. 如何进行数据分析。
房源数据介绍:
Airbnb 简介:是全世界最大的民宿预订网站,酒店业里的 P2P ,房东发布房源,游客选择并且预订。
数据分析准备:
在具体开展可视化实战之前我们先介绍工程项目并且初始数据,帮助我们更好地进行可视化分析。下面是列出的前期准备:
Python 编程环境;
Jupyter Notebook 或者其他编辑器;
Matplotlib :是画图的基本库;
Seaborn : Seaborn 是一种基于 matplotlib 的图形可视化 python libraty 。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。 Seaborn 其实是在 matplotlib 的基础上进行了更高级的 API 封装,从而使得作图更加容易,在大多数情况下使用 seaborn 就能做出很具有吸引力的图,而使用 matplotlib 就能制作具有更多特色的图。应该把 Seaborn 视为 matplotlib 的补充,而不是替代物。同时它能高度兼容 numpy 与 pandas 数据结构以及 scipy 与 statsmodels 等统计模式。掌握 seaborn 能很大程度帮助我们更高效的观察数据与图表,并且更加深入了解它们。
观察数据:
可视化分析的三个部分,是相承关系:
首先要观察原始数据,看有哪些数据内容,哪些内容是具有研究价值,哪些部分数据质量不高需要过滤;
选定一些研究点;
最后针对不同研究点选择适合的可视化途径。
首先读取数据:
import seaborn as sns#导入模块
import pandas as pd
from matplotlib import pyplot as plt
df = pd.read_csv('data/listings.csv', index_col=0)#读入数据
查看数据表格有哪些项:
for col in df.columns:#循环输出列名
print(col)
编程要求:
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,读入 Airbnb 数据集,并打印前 5 行数据。(文件路径为 Task2/listings.csv )。
测试说明:
平台会对你编写的代码进行测试:
预期输出:
id name host_id host_name neighbourhood_group neighbourhood latitude longitude room_type price minimum_nights number_of_reviews last_review reviews_per_month calculated_host_listings_count availability_365
0 2818 Quiet Garden View Room & Super Fast WiFi 3159 Daniel NaN Oostelijk Havengebied - Indische Buurt 52.36575 4.94142 Private room 59 3 262 2019-06-28 2.09 1 107
1 20168 Studio with private bathroom in the centre 1 59484 Alexander NaN Centrum-Oost 52.36509 4.89354 Private room 80 1 279 2019-07-08 2.45 2 140
2 25428 Lovely apt in City Centre (w.lift) near Jordaan 56142 Joan NaN Centrum-West 52.37297 4.88339 Entire home/apt 125 14 3 2019-05-11 0.17 2 106
3 27886 Romantic, stylish B&B houseboat in canal district 97647 Flip NaN Centrum-West 52.38673 4.89208 Private room 150 2 195 2019-07-01 2.14 1 74
4 28871 Comfortable double room 124245 Edwin NaN Centrum-West 52.36719 4.89092 Private room 75 2 277 2019-07-02 2.56 3 138
开始你的任务吧,祝你成功!
Begin-- End–:
import pandas as pd
import numpy as np
pd.set_option('display.max_columns', 1000)
pd.set_option('display.width', 1000)
pd.set_option('display.max_colwidth', 1000)
def student():
# ********* Begin *********#
df=pd.read_csv("Task2/listings.csv")
print(df.head(5))
# ********* End *********#
任务描述:
旅游选住的地方,地理位置往往是最重要的。那么在我们的数据中,房源地理位置分布有什么特点呢?下面我们来对地理位置数据进行可视化分析。
相关知识:
为了完成本关任务,你需要掌握:1. 如何统计数据;2. 如何绘制柱状图。
地理位置分析:
地理位置分析可以从两块入手:所属区域和位置经纬度
房源所属区域分析:房源按区域的数量分布;
房源位置经纬度:具体地理位置分布。
编程要求:
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,读入数据并画出房源类型的柱状图。具体请按照以下要求可视化:
读入数据路径为:Task3/listings.csv;
图形的 figsize 为 (10, 10);
使用 plt.savefig 函数保存图形;
图形保存到 Task3/img/T1.png。
测试说明:
平台会对你编写的代码进行测试:
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
def student():
# ********* Begin *********#
df=pd.read_csv("Task3/listings.csv")
plt.figure(figsize=(10,10))
sns.countplot(x = 'room_type',
data = df,
order = df['room_type'].value_counts(ascending=False).index)
plt.xticks(rotation=90)
plt.savefig("Task3/img/T1.png")
plt.show()
# ********* End *********#
任务描述:
本关任务:使用 scatterplot 绘制房源位置经纬度的散点图。
相关知识
散点图:顾名思义就是把一个个点按照横纵坐标画在图中。
seaborn绘制散点图
散点图能够显示 2 个维度上 2 组数据的值,每个点代表一个观察点。
X (水平)和 Y (垂直)轴上的位置表示变量的值。研究这两个变量之间的关系是非常有用的。在 seaborn 中通过 scatterplot 制作散点图。
sctterplot() 参数说明:
x ,y :输入的绘图数据,必须是数值型数据;
hue :对输入数据进行分组的序列,使用不同颜色对各组的数据加以区分;
s :标记大小。
示例如下:
tips = pd.read_csv('tips.csv')
print(tips.head())
sns.relplot(x="total_bill",
y="tip",
data=tips)
编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,使用seaborn 的 scatterplot 绘制房源位置经纬度的散点图,并设置标记大小为 10。
具体绘图,请按照以下要求可视化:
数据文件 Task4/listings.csv;
图形的 figsize 为 (10, 10);
文件名为 Task4/img/T1.png。
测试说明
平台会对你编写的代码进行测试:
import matplotlib
matplotlib.use("Agg")
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
def student():
# ********* Begin *********#
df=pd.read_csv("Task4/listings.csv")
plt.figure(figsize=(10,10))
sns.scatterplot(x="longitude",
y="latitude",
s=10,
data=df)
plt.savefig("Task4/img/T1.png")
plt.show()
# ********* End *********#
任务描述
本关任务:绘制一个包含直方图与线形图的图形。
相关知识
为了完成本关任务,你需要掌握:1. 直方图和条形图的区别;2. 如何绘制直方图。
什么是直方图
单从外表上看直方图和条形图非常相似。首先需要区分清楚概念:直方图和条形图。
条形图用长条形表示每一个类别,长条形的长度表示类别的频数,宽度表示表示类别。
直方图是一种统计报告图,形式上也是一个个的长条形,但是直方图用长条形的面积表示频数,所以长条形的高度表示 组距/频数 ,宽度表示组距,其长度和宽度均有意义。当宽度相同时,一般就用长条形长度表示频数。
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End区域内进行代码补充,根据输入数据将直方图与线形图绘制在同一面板中,具体绘图请按照以下要求可视化:
图形的figsize为(10, 10)
文件名为Task5/img/T1.png
测试说明
平台会对你编写的代码进行测试:
图片预期输出结果:
import matplotlib
matplotlib.use("Agg")
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
def student(data,x,y):
'''
根据输入数据将直方图与线形图绘制在同一面板中
:param data: 绘制直方图数据,类型为list
:param x,y: 绘制线形图数据,类型为list
:return: None
'''
# ********* Begin *********#
fig = plt.figure(figsize=(10, 10))
sns.distplot(data,kde=False)
sns.lineplot(x,y)
plt.savefig("Task5/img/T1.png")
# ********* End *********#