第1关:热图
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,在上图示例中计算属性之间的相关性。
具体绘图请按照以下要求可视化:
-
数据文件路径为 Task1/listings.csv;
-
图形的 figsize 为 (10, 10);
-
文件名为 Task1/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("Task1/listings.csv")
plt.figure(figsize=(10,10))
sns.heatmap(df[['price','minimum_nights','availability_365','reviews_per_month','number_of_reviews']].corr(),annot=True)
plt.xticks(rotation=90)
plt.savefig("Task1/img/T1.png")
plt.show()
# ********* End *********#
第2关:文本可视化
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,在右侧编辑器补充代码,对上图代码进行修改添加 mask 参数,使得绘制图形形状为房子形状。
具体绘图请按照以下要求可视化:
-
数据文件路径为 Task2/listings.csv;
-
图形的 figsize 为 (10, 10);
-
保存文件为 Task2/img/T1.png;
-
为了使每次的图形一致,设置 random_state 为 2019。
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
import seaborn as sns
from PIL import Image
import requests
import numpy as np
import pandas as pd
def student():
# ********* Begin *********#
# 补全所有None的部分
df=pd.read_csv("Task2/listings.csv")
mask = np.array(Image.open(requests.get('http://www.clker.com/cliparts/O/i/x/Y/q/P/yellow-house-hi.png', stream=True).raw))
filtered_words = {"Amsterdam", "apartment", "room", "bedroom", "studio", "city"}
wordcloud = WordCloud(
background_color = "white",
stopwords = set(STOPWORDS).union(filtered_words),
max_words = 100,
max_font_size = 40,
mask = mask,
random_state=2019
).generate(str(df["name"]))
plt.figure(figsize = (10,10))
plt.imshow(wordcloud)
plt.axis("off")
plt.savefig("Task2/img/T1.png")
plt.show()
# ********* End *********#
第3关:作图调整和美化
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充。读取数据,然后统计不同 room_type 的平均价格并使用 seaborn 的 barplot 函数绘制柱状图。
具体绘图请按照以下要求:
-
数据文件路径为 Task1/listings.csv;
-
图形的 figsize 为 (10, 10);
-
文件名为 Task3/img/T1.png;
-
设置背景为 whitegrid;
-
坐标轴旋转 90 度。
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 *********#
plt.figure(figsize = (10,10))
df=pd.read_csv("Task3/listings.csv")
d=df["price"].groupby(df["room_type"]).mean()
sns.set(style = 'whitegrid')
sns.barplot(y=d.values,x=d.index)
plt.xticks(rotation=90)
plt.savefig("Task3/img/T1.png")
plt.show()
# ********* End *********#