引入包
本项目所用数据为【密码:pfj6】:CDNOW_master.txt
import numpy as np
import pandas as pd
from pandas import DataFrame,Series
import matplotlib.pyplot as plt
# CDNOW_master.txt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
一、数据预处理
- 本阶段需求
- 读取数据集
df = pd.read_csv('./CDNOW_master.txt')
df.head()
消除列的索引,使用指定索引
# "\s+"则表示匹配任意多个上面的字符 ⭐
df = pd.read_csv('./CDNOW_master.txt',header=None,sep='\s+',names=['user_id','order_dt','order_product','order_amount'])
df.head()
- 查看数据类型
df.info()
- 将order_dt转换成时间序列
df['order_dt'] = pd.to_datetime(df['order_dt'],format='%Y%m%d')
df.info()
- 查看数据的统计描述
df.describe()
- 在源数据中添加一列表示月份:astype(datetime64[‘M’])
df['month'] = df['order_dt'].astype('datetime64[M]')
df.head()
astype的用法:np.astype()
Python中与数据类型相关函数及属性有如下三个:type/dtype/astype
- type() 返回参数的数据类型
- dtype 返回数组中元素的数据类型
- astype() 对数据类型进行转换
二、按月对数据分析
- 用户每月花费的总金额
df.groupby(by='month')['order_amount'].sum()
- 绘制曲线图
df.groupby(by='month')['order_amount'].sum().plot()
- 对上图进行细化
plt.figure(figsize=(8,5))
plt.plot(df.groupby(by='month')['order_amount'].sum())
plt.xlabel('order_dt')
plt.ylabel('sum of amount')
plt.title('用户每月花费的总金额')
plt.legend()
- 所有用户每月的产品购买数量
df.groupby(by='month')['order_product'