此专栏的python数据分析使用的工具是jupyter notebook软件,使用起来相对于pycharm更加直观和清晰。当然这些代码在pycharm中也是可以运行的。

小费数据下载

 1.  数据分析流程

python数据分析项目经验怎么写 python数据分析小项目_jupyter

2.  数据来源

      小费数据来源于Python第三方库seaborn(用于绘图)中自带的数据,加载该数据集。如果没有的话,可以点击文章最上方链接自行下载(免费下载)。

# 导入相关库
import numpy as np
from pandas import Series,DataFrame
import pandas as pd
# 读取小费数据集
tips= pd.read_csv(open('tips.csv'))
tips.head()

python数据分析项目经验怎么写 python数据分析小项目_python_02

       该小费数据为餐饮行业收集的数据。total_bill列为消费总金额;tip为小费金额;sex列为顾客性别;smoker列为顾客是都吸烟;day列为消费的星期;time列为聚餐的时间段;size列为聚餐人数。

3.  定义问题

       本次分析中,围绕小费数据集提出几个问题:小费金额与消费总额是否存在相关性性别、是否吸烟、星期几、中/晚餐、聚餐人数和小费金额是否有一定的关联小费金额占小费总金额的百分比服从正态分布

4.  数据清洗和处理

 查看数据情况:通过结果可以看出,总共有244条数据,通过统计值暂时看不出是否有缺失值。

# 描述性统计
tips.shape

python数据分析项目经验怎么写 python数据分析小项目_python_03

描述性统计:首先对数据进行简单的描述,看是否有缺失值或者异常值。

tips.describe()

python数据分析项目经验怎么写 python数据分析小项目_jupyter_04


打印数据:通过打印数据info信息可以看出每列数据的类型和缺失值,本例中的消费数据集没有缺失值。  

tips.info()

python数据分析项目经验怎么写 python数据分析小项目_数据可视化_05

5.  数据探索

# 小费金额与消费总额散点图
tips.plot(kind='scatter',x='total_bill',y='tip')

python数据分析项目经验怎么写 python数据分析小项目_数据分析_06


# 男性平均小费金额
male_tip = tips[tips['sex'] == 'Male']['tip'].mean()
male_tip

>>> 3.0896178343949052
# 女性平均消费金额
female_tip = tips[tips['sex'] == 'Female']['tip'].mean()
female_tip

>>> 2.833448275862069
# 合成列表
s = Series([male_tip,female_tip],index=['male','female'])
s

python数据分析项目经验怎么写 python数据分析小项目_数据分析_07

# 男女平均小费柱状图
s.plot(kind='bar')

python数据分析项目经验怎么写 python数据分析小项目_jupyter_08


 其它字段与小费的关系也是类似的方法。例如,日期与小费的关系。

# 日期唯一值
tips['day'].unique()

>>> array(['Sun', 'Sat', 'Thur', 'Fri'], dtype=object)
sun_tip = tips[tips['day'] == 'Sun']['tip'].mean()
sat_tip = tips[tips['day'] == 'Sat']['tip'].mean()
thur_tip = tips[tips['day'] == 'Thur']['tip'].mean()
fri_tip = tips[tips['day'] == 'Fri']['tip'].mean()

s = Series([thur_tip,fri_tip,sat_tip,sun_tip],index=['Thur','Fri','Sat','Sun'])
s

python数据分析项目经验怎么写 python数据分析小项目_数据分析_09

# 日期平均小费柱状图
s.plot(kind='bar')

python数据分析项目经验怎么写 python数据分析小项目_jupyter_10

从图中可以看出,周末的小费比周四周五的消费高。


# 小费百分比
tips['percent_tip'] = tips['tip']/(tips['total_bill']+tips['tip'])
tips.head(10)

python数据分析项目经验怎么写 python数据分析小项目_数据可视化_11

# 小费百分比直方图
tips['percent_tip'].hist(bins=50)

python数据分析项目经验怎么写 python数据分析小项目_数据分析_12

6.  分析结果总结

  1. 小费金额与消费总金额存在着正相关的关系,即消费的金额越多,给的小费也就越多,这是比较合理的。
  2. 女性小费金额少于男性小费金额。
  3. 周末的小费比周四周五的消费高。
  4. 小费数据集基本符合正态分布,但也有几个异常点。