数据科学导论——数据可视化
数据可视化是什么? 数据可视化是将数据和信息通过用图来表示展示其价值。直观来讲,常见画图的目的有:
@按区间划分的数据,进行比较; @展现变量间的关系或分布; @展现网络结果的节点、边、集群,寻找路径,找到影响力大的节点; @表示关系,将相关性等属性用不同颜色展示; @用字词大小展示频率、重要性; @在 3D 空间上展示变量关系、分布。
第1关:数据可视化的内涵
本关任务:阅读下列的相关知识,完成与数据可视化的相关选择题。
第2关:初识数据
本关任务:分析 Airbnb 房源数据并挖掘规律。 为了完成本关任务,你需要掌握:1. 如何使用 pandas ;2. 如何进行数据分析。
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():
df=pd.read_csv("Task2/listings.csv")
print(df.head(5))
第3关:柱状图
旅游选住的地方,地理位置往往是最重要的。那么在我们的数据中,房源地理位置分布有什么特点呢?下面我们来对地理位置数据进行可视化分析
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
def student():
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()
第4关:散点图
本关任务:使用 scatterplot 绘制房源位置经纬度的散点图。
import matplotlib
matplotlib.use("Agg")
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
def student():
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()
第5关:直方图
本关任务:绘制一个包含直方图与线形图的图形。
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
'''
fig = plt.figure(figsize=(10, 10))
sns.distplot(data,kde=False)
sns.lineplot(x,y)
plt.savefig("Task5/img/T1.png")
数据科学导论——数据可视化进阶
第1关:热图
本关任务:编写一个能绘制热图的程序。
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
def student():
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()
第2关:文本可视化
本关任务:形状可以增加视觉吸引力,编写一个能绘制房型词云的程序
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():
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()
第3关:作图调整和美化
本关任务:绘制一个修改背景和坐标轴的柱状图。
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
def student():
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()
|