数据分析-以买东西数据为例

数据分析-以买东西数据为例

首先导入库:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

然后到数数据:

df=pd.read_csv('./data/CDNOW_master.txt',header=None,sep='\s+',names=['use_id','order_dt','order_product','order_amount'])
df

其中header=None表示没有列名,sep=’\s+’表示按多个空格分隔列,names=[‘use_id’,’order_dt’,’order_product’,’order_amount’]表示将列名重新命名为’use_id’,’order_dt’,’order_product’,’order_amount’。

数据分析-以买东西数据为例
查看文件信息:
df.info()

数据分析-以买东西数据为例
将’order_dt’转换为日期格式:
df['order_dt']=pd.to_datetime(df['order_dt'],format='%Y%m%d')
df

数据分析-以买东西数据为例
分析列为数字的列:
df.describe()

数据分析-以买东西数据为例
加入新的列,列中数据为当年月份:
df['month']=df['order_dt'].astype('datetime64[M]')
df

数据分析-以买东西数据为例
所有用户每月消费的总数:
df.groupby(by='month')['order_amount'].sum()

数据分析-以买东西数据为例
画相关折线图:
df.groupby(by='month')['order_amount'].sum().plot()

数据分析-以买东西数据为例
所有用户每月的消费次数:
df.groupby(by='month')['order_product'].sum()

数据分析-以买东西数据为例
画出相关的折线图:
df.groupby(by='month')['order_product'].sum().plot()

数据分析-以买东西数据为例
每月有多少不同用户买了东西:
df.groupby(by="month")['use_id'].nunique()

数据分析-以买东西数据为例

.nunique()表示unique()后计算数量。
求每名用户消费的钱数:

df.groupby(by='use_id')['order_amount'].sum()

数据分析-以买东西数据为例
每名用户买了多少次东西:
df.groupby(by='use_id').count()

数据分析-以买东西数据为例
每名用户花的总钱数与总商品数的散点图:
money_amount=df.groupby(by='use_id')['order_amount'].sum()
num_amount=df.groupby(by='use_id')['order_product'].sum()
plt.scatter(money_amount,num_amount)

数据分析-以买东西数据为例
每名用户消费的总钱数(小于1000)
df.groupby(by='use_id').sum().query("order_amount)['order_amount']

数据分析-以买东西数据为例
df.groupby(by='use_id').sum().query("order_amount)['order_amount'].hist()

数据分析-以买东西数据为例
每名用户所买商品的总数量(小于100):
df.groupby(by='use_id').sum().query("order_product)['order_product']

数据分析-以买东西数据为例
df.groupby(by='use_id').sum().query("order_product)['order_product'].hist()

数据分析-以买东西数据为例
用户第一次消费的月份:
df.groupby(by='use_id')['month'].min()

每月的新用户:

df.groupby(by='use_id')['month'].min().value_counts()

数据分析-以买东西数据为例
用户最后一次消费的月份:
df.groupby(by='use_id')['month'].max()

数据分析-以买东西数据为例
每月中最后一次消费的用户数:
df.groupby(by='use_id')['month'].max().value_counts()

数据分析-以买东西数据为例
最后一次消费与第一次消费在相同月份的有:
df.groupby(by='use_id')['order_dt'].agg(['min','max'])
new_old_use=df.groupby(by='use_id')['order_dt'].agg(['min','max'])
(new_old_use['min']==new_old_use['max']).value_counts()

数据分析-以买东西数据为例
获取透视图:
df.pivot_table(index='use_id',aggfunc={'order_product':'sum','order_amount':'sum','order_dt':'max'})
new_df=df.pivot_table(index='use_id',aggfunc={'order_product':'sum','order_amount':'sum','order_dt':'max'})

假设现在是文件中消费日期中最后的一天,计算出所有消费日期与最后一天的消费日期的差值为:

max_dt=df['order_dt'].max()
-(df.groupby(by='use_id')['order_dt'].max()-max_dt)/np.timedelta64(1,'D')
new_df['R']=-(df.groupby(by='use_id')['order_dt'].max()-max_dt)/np.timedelta64(1,'D')
new_df

数据分析-以买东西数据为例
组成MFR表:
new_df.drop(labels='order_dt',axis=1,inplace=True)
new_df.columns=['M','F','R']
new_df

数据分析-以买东西数据为例
计算每名用户每月的订单数量:
second_df=df.pivot_table(index='use_id',values='order_dt',aggfunc='count',columns='month')

以用户名(’use_id’)为行名,就是以use_id分组对order_dt求和,其中的columns对order_dt再进行细分,划分为每月。
对其中的NAN赋为’0’。

second_df=second_df.fillna(0)
second_df

数据分析-以买东西数据为例
判断用户当月是否消费了:
user_month_df=second_df.applymap(lambda x:1 if x>=1 else 0)
user_month_df

数据分析-以买东西数据为例

Original: https://blog.csdn.net/qq_28368825/article/details/123308345
Author: qq_28368825
Title: 数据分析-以买东西数据为例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/754728/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python读取.xlsx指定行列

    本文以Python3.9.1读取data.xlsx中包含的西瓜数据集3.0数据为例,数据集如下: 编号色泽根蒂敲声纹理脐部触感密度含糖率好瓜1青绿蜷缩浊响清晰凹陷硬滑0.6970….

    Python 2023年8月15日
    039
  • Python神经网络手写数字识别代码&解释

    使用了数据集MNIST中的部分数据。 1、读取数据集内容 #打开文件并获取其中的内容 data_file=open("mnist_train.csv",’r’)…

    Python 2023年8月24日
    062
  • 【Python入门基础】Pygame实例

    Pygame程序实例源自小…

    Python 2023年9月21日
    044
  • 08_Linux基础-vim-tmux-字符编码

    08_Linux基础-vim-tmux-字符编码 一. vim 文本编辑器-vim(编辑文本) Windows:记事本、word、sublime、pycharm能编辑音乐、视频、图…

    Python 2023年6月15日
    075
  • 红外图像和可见光图像异源图像配准问题研究

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、配准的基本原理 * 1.1 常用的配准方法 1.2 配准流程 1.3 图像预处理 &#8211…

    Python 2023年9月27日
    057
  • django rest framework之基于token实现基本用户认证

    class OrderView(APIView): ###订单相关业务### # 查看订单的所有信息 def get(self, request, *args, **kwargs)…

    Python 2023年6月12日
    0100
  • 猿创征文 | 国产数据库TiDB架构特性

    前言 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Ana…

    Python 2023年9月28日
    030
  • Python之文件操作

    Python之文件操作 原创 wx62d12289ce45b2022-08-10 17:26:06博主文章分类:Python ©著作权 文章标签 github 文件名 复制文件 文…

    Python 2023年5月24日
    074
  • Yolov3算法详解

    在本文开题处我们就说过,Yolo系列算法时一种典型的”一阶段”目标检测算法,这是Yolo最为出彩的设计,一次性即可完成对目标的定位和识别——这是RCNN等其…

    Python 2023年6月12日
    063
  • 彻底搞懂kubernetes调度框架与插件

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Python 2023年6月3日
    060
  • Pandas

    两个常用的类,Series、DataFrame Series Series是一种类似于一位数组的对象,由下面两个部分组成 values:一组数据 index:相关的数据索引标签 S…

    Python 2023年8月7日
    066
  • python dataframe遍历_python中如何按行遍历Dataframe

    在python的DataFrame中,因为数据中可以有多个行和列。而且每行代表一个数据样本,我们可以将DataFrame看作数据表,那你知道如何按照数据表中的行遍历吗?本文介绍py…

    Python 2023年8月7日
    060
  • 镜像与容器

    Docker 镜像 如果进行形象的表述,我们可以将 Docker 镜像理解为包含应用程序以及其相关依赖的一个基础文件系统,在 Docker 容器启动的过程中,它以只读的方式被用于创…

    Python 2023年6月3日
    050
  • Pandas使用自定义函数

    如果想要应用自定义的函数,或者把其他库中的函数应用到 Pandas 对象中,有以下三种方法: 1) 操作整个 DataFrame 的函数:pipe() 2) 操作行或者列的函数:a…

    Python 2023年8月16日
    061
  • NumPy字符串处理函数

    NumPy 提供了许多字符串处理函数,它们被定义在用于处理字符串数组的 numpy.char 这个类中,这些函数的操作对象是 string_ 或者 unicode_ 字符串数组。如…

    Python 2023年8月28日
    031
  • Python中的groupby分组

    Python中的groupby分组 一、groupby函数 groupby函数功能:对DataFrame进行分组(可单类分组,可多类分组)需求:按”字段”列…

    Python 2023年8月1日
    060
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球