小費(fèi)數(shù)據(jù)集項(xiàng)目分析案例
新手可以用這個(gè)基礎(chǔ)案例,練習(xí)一些可視化的內(nèi)容。
小費(fèi)數(shù)據(jù)集項(xiàng)目分析目的:
小費(fèi)金額與消費(fèi)總額是否存在相關(guān)性?
性別、是否吸煙、星期幾、中/晚餐、聚餐人數(shù)和小費(fèi)金額是否有一定的關(guān)聯(lián)?
小費(fèi)金額占消費(fèi)總金額的百分比是否服從正態(tài)分布?
#?導(dǎo)入包
import?seaborn?as?sns
from?pandas?import?Series,DataFrame
import?pandas?as?pd
import?matplotlib.pyplot?as?plt
%matplotlib?inline
#?拿到小費(fèi)數(shù)據(jù)集
tips?=?sns.load_dataset('tips')
#?數(shù)據(jù)介紹:total_bill列為消費(fèi)總金額;tip列為小費(fèi)金額;sex列為顧客性別;smoker列為顧客是否抽煙;day列為消費(fèi)的星期;time列為聚餐的時(shí)間段;size列為聚餐人數(shù)
#?查看前5行數(shù)據(jù)
tips.head()

#?開始檢查數(shù)據(jù),數(shù)據(jù)量、數(shù)據(jù)缺失、數(shù)據(jù)是否異常等
tips.shape
(244,?7)
#?數(shù)值型數(shù)據(jù)描述性查看
tips.describe()

#?查看數(shù)據(jù)類型正常,并且沒有缺失值
tips.info()
'pandas.core.frame.DataFrame'>
RangeIndex:?244?entries,?0?to?243
Data?columns?(total?7?columns):
total_bill????244?non-null?float64
tip???????????244?non-null?float64
sex???????????244?non-null?category
smoker????????244?non-null?category
day???????????244?non-null?category
time??????????244?non-null?category
size??????????244?non-null?int64
dtypes:?category(4),?float64(2),?int64(1)
memory?usage:?7.2?KB
#?查看單個(gè)變量tip的分布情況,使用直方圖
sns.distplot(tips['tip'])

#?散點(diǎn)圖查看小費(fèi)和消費(fèi)金額是否有相關(guān)性。圖示表明,存在正線性相關(guān)。小費(fèi)金額越高,小費(fèi)越高
tips.plot(kind='scatter',?x='total_bill',?y='tip')

#?分類散點(diǎn)圖,用于觀察不同分類下,值的數(shù)量和高低分布
sns.stripplot(x='day',y='tip',data=tips)
sns.despine()

#?查看總金額和小費(fèi)整體數(shù)據(jù)情況,圖中總體金額呈現(xiàn)右偏,并且有部分異常值;小費(fèi)呈現(xiàn)左偏
#?figure()?設(shè)置圖形大小
plt.figure(figsize=(12,8))
tips.boxplot(column=['total_bill','tip'],vert=False)

#?關(guān)注性別是否影響小費(fèi)金額,這里使用男女總體平均值作為對(duì)比
male_tip?=?tips[tips['sex']?==?['Male']]['tip'].mean()
male_tip
3.0896178343949043
female_tip?=?tips[tips['sex']?==?['Female']]['tip'].mean()
female_tip
2.8334482758620685
s?=?Series(
????[male_tip,?female_tip],
????index=['male','female']
)
s
male??????3.089618
female????2.833448
dtype:?float64
#?使用柱狀圖查看男女分類類別
s.plot(kind='bar')

#?Seaborn預(yù)設(shè)了四種比例,根據(jù)大小依次為?paper?notebook?talk?poster?默認(rèn)是?notebook,也就是上述的樣式
sns.set_context('talk')
s.plot(kind='bar')

#?上述算平均值較為繁瑣,這里可以使用groupby,比較快捷
sex_group?=?tips.groupby('sex')['tip'].mean()
sex_group.plot(kind='bar')

#?使用同樣方式查看每一天什么時(shí)刻小費(fèi)較高?
time_tip?=?tips.groupby('time')['tip'].mean()
time_tip.plot(kind='bar')

#?使用同樣方式查看每周哪一天小費(fèi)較高
day_tip?=?tips.groupby('day')['tip'].mean()
day_tip.plot(kind='bar')

#?查看小費(fèi)占總金額的分布情況
tips['percent_tip']?=?tips['tip']/(tips['tip']?+?tips['total_bill'])
tips.head()

#?使用直方圖查看小費(fèi)占比分布,從圖中可以看出,小費(fèi)占比分布基本符合正態(tài)分布,有個(gè)別異常點(diǎn),以及左偏
tips['percent_tip'].plot(kind='hist')

評(píng)論
圖片
表情
