首页 > 编程语言 >实训日记十:Python文本挖掘数据分析-part1

实训日记十:Python文本挖掘数据分析-part1

时间:2024-06-18 23:29:58浏览次数:34  
标签:Python part1 实训 pd year df import byyear 数据

目录

数据分析流程

在这里插入图片描述

  • 每个环节都有具体的要求,例如需求文档要求包含:目的,分析思路,预期效果
  • 业务部门出问题和需求,以及对算法&数据部门输出报告的理解和应用

项目背景&产品架构

客户介绍:拜耳官方旗舰店(拜耳公司,总部位于德国的勒沃库森,在六大洲的200个地点建有750家生产厂;拥有120,000名员工及350家分支机构,几乎遍布世界各国.高分子,医药保健,化工以及农业是公司的四大支柱产业.公司的产品种类超过10000种)
客户需求:拜耳官方旗舰店寻求市场增长点
产品架构:
在这里插入图片描述

数据说明

在这里插入图片描述

分析流程

驱虫市场的潜力分析-分析目的&加载数据

  • 分析目的:针对各个子类目市场近三年的交易额数据,以及top100品牌数据(2017年11月到2018年10月),通过描述性分析,在年变化的维度上:
  1. 分析整个市场的总体趋势
  2. 分析各子类目市场占比及变化趋势
  3. 分析市场集中度,即是否存在垄断
  • 分析过程
    -读取各子类目市场近三年交易额数据
    -依时间汇总成各子类目在时间线上的交易金额数据

加载数据

导入所需库

import glob
import os 
import pandas as pd
import numpy as np
import re
import datetime as dt
from sklearn.linear_model import LinearRegression
import seaborn as sns;sns.set()
from matplotlib import pyplot as plt
import jieba
import jieba.analyse
import imageio
from wordcloud import WordCloud
from snownlp import SnowNLP
import warnings
warnings.filterwarnings('ignore')

1、切换目录,将数据文件data存至于Jupyter Notebook所写文件的相同目录下,运行如下代码

# 切换目录
os.chdir('data\驱虫剂市场')

2、查找驱虫市场目录下关于近三年交易额的数据文件

filenames1 = glob.glob("*市场近三年交易额.xlsx")
filenames1

运行结果如下
在这里插入图片描述
这里假设 1、各月之间没有明显的周期性变化; 2、每年对应月份的数据呈线性变化
3、定义函数,读取单个excel文件,转换成DataFrame,改变列名, 时间列变为datetime类型,并将时间列变为index

def read_3threes(filename):
    colname = re.search(r'.*(?=市场)',filename).group() # 提取文件名中“市场”前面的文字
    df = pd.read_excel(filename) 
    if df['时间'].dtypes == 'int64':
        # 将“时间”列的数据类型转变为datetime类型
        df['时间'] = pd.to_datetime(df['时间'],unit='D',origin=pd.Timestamp('1899-12-30'))
    df.rename(columns={df.columns[1]:colname},inplace=True) # 修改第二列的列名
    df.set_index('时间',inplace=True)
    return df
# 分别读取七个文件,并转换成DataFrame,存入列表中
dfs = [read_3threes(filename) for filename in filenames1]
# 将7个DataFrame在axis=1的方向拼接
df = pd.concat(dfs,axis=1).reset_index()
df.head()

结果如下:以时间为索引,得到不同属性商品的交易额
在这里插入图片描述
4、查看各列的数据缺失情况

df.isna().mean()

在这里插入图片描述

5、抽取df的所有月份,以供后面使用

month = df['时间'].dt.month
month

清洗数据-驱虫市场潜力分析

由于其中的时间列是从2015年11月到2018年10月,而我们需要的是2016-2018年每月完整的数据(方便从年变化的角度分析产品)
这里我们假设:

  • 每年各月之间没有明显规律的周期性变化(近似认为月和月之间的相关性不大)
  • 每年对应月份的数据是线性变化的(一是因为数据少,二是认为随着年份的增长,交易额在大环境下是稳步变化的)
    故这里我们可以简单的用线性回归预测
    1、对于每个子类目市场,用15,16,17年的11/12月销售金额预测18年的11/12月数据
for i in [11,12]:
    dm = df[month==i] # 从df中抽取对应月份的记录
    Xtrain = np.array(dm['时间'].dt.year).reshape(-1,1)
    y_hat = [pd.datetime(2018,i,1)]
    for j in range(1,len(dm.columns)):  # 遍历对应月份的每个种类
        ytrain = np.array(dm.iloc[:,j])  # 获取对应种类的交易金额,作为训练样本集标签
        reg = LinearRegression()
        reg.fit(Xtrain,ytrain)
        y_predict = reg.predict(np.array([2018]).reshape(-1,1))
        y_hat.append(y_predict)
    newrow = pd.DataFrame(dict(zip(df.columns,y_hat)))
    df = newrow.append(df)  # 将预测的结果加到df中

预测结果2018年预测结果如下:2、删除2015年的记录

df = df[df['时间'].dt.year!=2015]

3、添加新列,用来存储每年每月的交易金额总和

df['colsum'] = df.sum(1)
df.head()

插入一个年分列’year’

df.insert(1,'year',df['时间'].dt.year)

得到前五行数据为:
在这里插入图片描述
4、根据年份分组,并对每一组求和,重置索引

byyear = df.groupby('year').sum().reset_index()
# 重命名 'year' 列为 '年份'
byyear = byyear.rename(columns={'year': '年份'})
byyear = byyear.rename(columns={'colsum': '合计'})

# 显示前几行数据
byyear.head()

在这里插入图片描述

整体市场-驱虫市场的潜力分析

按照年份查看驱虫市场的总体变化趋势

  • 所有子类目市场每年的交易金额总和;折线图表示变化
# 绘图
sns.relplot('年份','合计',kind='line',marker='o',data=byyear)
plt.title('近三年驱虫市场趋势',fontsize=16)
plt.xticks(byyear.年份)
plt.xlabel('年份')
plt.yticks(byyear.合计)
plt.ylabel('总交易额')
plt.show()

在这里插入图片描述
可以看出:近三年呈增长趋势,整个市场倾向于成长期和成熟期

标签:Python,part1,实训,pd,year,df,import,byyear,数据
From: https://blog.csdn.net/2301_79744393/article/details/139736271

相关文章

  • PyQt5和Eric7的安装使用 —— Python篇
    需要安装Python的朋友请看另一篇文章:windows系统安装Python-----并安装使用Pycharm编辑器一、安装PyQt5:1、方法一:使用pip命令在线安装。输入以下命令可以直接安装:pipinstallPyQt5由于安装默认使用国外的镜像,可能因为网络问题会导致下载慢或者失败的现象。所以我们可以......
  • 【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)
    ......
  • 【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
    ......
  • 《 Python趣味编程 | 从入门到就业》专栏介绍
    前言欢迎订阅《Python趣味编程|从入门到就业》专栏!本专栏主要包含六大部分:⭐Python炫酷系列⭐Python动漫系列⭐Python游戏系列⭐Python基础知识⭐Python实用技巧⭐Python算法设计【注】订阅后可查看专栏内所有文章。(含完整代码+详细解析+资源下载链接)环境配置​P......
  • IPython:交互式Python编程环境的详解
    文章目录引言安装IPythonIPython的基本使用启动IPython输入和执行代码自动补全历史记录交互式帮助IPython的高级功能魔术命令(MagicCommands)%lsmagic和%magic%pdb和%debug%who和%whos%time和%timeit%run%edit丰富的输出格式交互式绘图面向对象编程和自省......
  • python编程笔记
    pythonimport库失败:原因是解释器选择不对,pip3installnumpy是把numpy库安装在3.xxx的python解释器中,但是我是在3.9.6的解释器下运行的,所以找不到,此时需要把解释器换成3.11.9即可。Super(Net,self)._init_()这是对继承自父类的属性进行初始化,子类继承了父类的所有属性......
  • 通过python-CNN训练识别夏冬季节风景-含数据集+pyqt界面
    代码下载地址:https://download.csdn.net/download/qq_34904125/89384463本代码是基于pythonpytorch环境安装的。下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。或可直接参考下面博文进行环境安装。深度学习环境安装教程-anaconda-python-......
  • 基于python-CNN深度学习的中草药识别-含数据集+pyqt
    代码下载地址:https://download.csdn.net/download/qq_34904125/89384380本代码是基于pythonpytorch环境安装的。下载本代码后,有个requirement.txt文本,里面介绍了如何安装环境,环境需要自行配置。或可直接参考下面博文进行环境安装。深度学习环境安装教程-anaconda-python-......
  • python中selenium封装
    fromseleniumimportwebdriverimporttimeclasscms(object):a=webdriver.Chrome()definit(self):self.a.get("http://192.168.193.135:8080/cms/manage/login.do")time.sleep(2)self.a.find_element_by_name("userAccount").send_keys(&quo......
  • 【Python数据分析】Pandas_描述性统计
    描述统计学(descriptivestatistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律、特征做出综合性的描述分析。Pandas库正是对描述统计学知识完美应用的体现,可以说如果没有“描述统计学”作为理论基......