当前位置:  开发笔记 > 编程语言 > 正文

Python数据分析实战之 概述数据分析

大数据时代,数据呈现爆炸式增长,对数据和数据人才的需求大大提升;数据分析师的任务是分析了、预测未来和优化选择;成为数据分析师必须具备多种技能,利用好Python等工具。Python教程栏目介绍概述数据。
Python教程栏目介绍概述数据。

3.成为数据分析师之路

成为数据分析师的自我修养:

  • 敏感
  • 探究
  • 细致
  • 务实

数据分析师需要具备的技能如下:

  • 熟悉Excel数据处理
  • 数据敏感度较强
  • 熟悉公司业务和行业知识
  • 掌握数据分析方法
    • 基本分析方法
      • 对比分析法
      • 分组分析法
      • 交叉分析法
      • 结构分析法
      • 漏斗图分析法
      • 综合评价分析法
      • 因素分析法
      • 矩阵关联分析
    • 高级分析方法
      • 相关分析法
      • 回归分析法
      • 聚类分析法
      • 判别分析法
      • 主成分分析法
      • 因子分析法
      • 对应分析法
      • 时间序列

在不同行业数据分析从业人员的工作内容和职责:

  • 从事数据分析的工作
    • 学做日报
    • 日销、库存类的表
    • 产品销售预测
    • 库存计算和预警
    • 流量分析相关表
    • 复盘
  • 数据分析挖掘工作人员
    • 给产品优化提供数据支持
    • 验证产品改进效果
    • 为高层提供邮件和报表
  • 互联网+分析
    • KPI指标监控
    • 各种周期性报表
    • 针对某一业务问题做分析报告
    • 针对业务进行线下建模和分析

数据分析很重要的学科基础是数学,但是数学不好也没有关系,可以用Python来帮助学习:
Python不仅是一门编程语言,而且是数据挖掘机器学习等技术的基础,方便建立自动化的工作流;
Python入门不难,它对数学要求并不是太高,重要的是需要知道如何用语言表达一个算法逻辑;
Python有很多封装好的工具库和命令,需要做的是用哪些数学方法解决一个问题,并构建出来。

要想快速入门Python数据分析,就要使用好Python相关的工具包:
(1)Python最大的特点是拥有一个巨大而活跃的科学计算社区,采用python进行科学计算的趋势也越来越明显。
(2)由于Python有不断改良的库,使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完全可以只是用Python这一种语言去构建以数据为中心的应用程序,其中:

  • 常用数据分析库
    • Numpy
    • Scipy
    • Pandas
    • matplotlib
  • 常用高级数据分析库
    • nltk
    • igraph
    • scikit-learn

(3)作为一个科学计算平台,Python的能够轻松集成C、C++以及Fortran代码。

数据分析的准备工作:

  • 了解数据
  • 数据清洗与初步分析
  • 绘图与可视化
  • 数据聚合与分组处理
  • 数据挖掘

数据分析与数据挖掘的常用算法:

  • 线性回归
  • 时间序列分析
  • 分类算法
  • 聚类算法
  • 降维算法

学习和从事数据分析工作的方法为:

  • 勤思考
  • 多动手
  • 多总结

二、Python的安装与环境配置

1.Python版本

Python分为3.X和2.X两个大版本。
Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。
为了不带入过多的累赘,Python 3.X在设计的时候没有考虑向下相容,许多针对早期Python版本设计的程式都无法在Python 3.X上正常执行。
大多数第三方库都正在努力地相容Python 3.X版本。

2.不同系统安装Python

(1)Unix & Linux系统

  • 访问http://www.python.org/download/
  • 选择适用于Unix/Linux的源码压缩包
  • 下载及解压压缩包
  • 如果你需要自定义一些选项,修改Modules/Setup
  • 执行./configure脚本
  • make
  • make install

(2)Window系统

  • 访问http://www.python.org/download/
  • 在下载列表中选择Window平台安装包
    由于官网下载很缓慢,因此我已经将Python各版本的安装包下载整理好了,可以直接点击加QQ群 (2)提供环境管理的功能,功能类似virtualenv,解决了多版本Python并存、切换的问题 。

    2.下载和安装Anaconda

    直接在官网https://www.anaconda.com/products/inpidual下载安装包,选择下载Python3.8的安装包个人版即可,但是官网下载速度较慢,因此我已经将Python3.8对应的Anaconda安装包下载整理好了,可以直接点击加QQ群

    可以看到环境为Python 3.8.3,Anaconda创建的基础环境名为base,也是默认环境,也可以看到默认安装的库。

    再打开Anaconda命令行工具Anaconda Powershell Prompt,输入python -V,也打印Python 3.8.3

    还可以通过命令创建新的conda环境,如conda create --name py27 python=2.7执行后即创建了一个名为py27的Python版本为2.7的conda环境。

    激活环境执行命令conda activate py27,停用使用命令conda deactivate

    可以在命令行中执行conda list查看已经安装的库,如下:

    # packages in environment at E:\Anaconda3:
    #
    # Name                    Version                   Build  Channel
    _ipyw_jlab_nb_ext_conf    0.1.0                    py38_0
    alabaster                 0.7.12                     py_0
    anaconda                  2020.07                  py38_0
    anaconda-client           1.7.2                    py38_0
    anaconda-navigator        1.9.12                   py38_0
    ...
    zlib                      1.2.11               h62dcd97_4
    zope                      1.0                      py38_1
    zope.event                4.4                      py38_0
    zope.interface            4.7.1            py38he774522_0
    zstd                      1.4.5                ha9fde0e_0

    3.conda工具的介绍和包管理

    conda是Anaconda下用于包管理环境管理的工具,功能上类似pip和virtualenv的组合,conda的环境管理与virtualenv是基本上是类似的操作。
    安装成功后conda会默认加入到环境变量中,因此可直接在命令行窗口运行conda命令。

    常见的conda命令和含义如下:

    命令含义conda命令
    conda –h查看帮助
    基于python3.6版本创建名为python36的环境conda create --name python36 python=3.6
    激活此环境activate python36(Windows)、source activate python36(linux/mac)
    查看python版本python -V
    退出当前环境deactivate python36
    删除环境conda remove -n py27 --all
    查看所有安装的环境conda info -e

    conda的包管理常见命令如下:

    包管理命令意义包管理命令
    安装matplotlibconda install matplotlib
    查看已安装的包conda list
    包更新conda update matplotlib
    删除包conda remove matplotlib

    在conda中,anything is a package一切皆是包,conda本身可以看作是一个包,python环境可以看作是一个包,anaconda也可以看作是一个包,因此除了普通的第三方包支持更新之外,这3个包也支持如下命令:

    操作命令
    更新conda本身conda update conda
    更新anaconda应用conda update anaconda
    更新python,假设当前python环境是3.8.1,而最新版本是3.8.2,那么就会升级到3.8.2conda update python

    四、Jupyter Notebook

    1.Jupyter Notebook基本介绍

    Jupyter Notebook(此前被称为IPython notebook)是一个交互式笔记本,支持运行40多种编程语言。

    在开始使用notebook之前,需要先安装该库:
    (1)在命令行中执行pip install jupyter来安装;
    (2)安装Anaconda后自带Jupyter Notebook。

    在命令行中执行jupyter notebook,就会在当前目录下启动Jupyter服务并使用默认浏览器打开页面,还可以复制链接到其他浏览器中打开,如下:

    如需获取数据、代码等相关文件进行测试学习,可以直接点击加QQ群 963624318 在群文件夹Python数据分析实战中下载即可。

    现在需要通过Python将其读取出来,并将指定的字段保存到MongoDB中,需要在Anaconda中执行命令conda install pymongo安装pymongo。

    Python代码如下:

    import pymongoclass Product:
        def __init__(self,productId:int ,name, imageUrl, categories, tags):
            self.productId = productId
            self.name = name
            self.imageUrl = imageUrl
            self.categories = categories
            self.tags = tags    def __str__(self) -> str:
            return self.productId +'^' + self.name +'^' + self.imageUrl +'^' + self.categories +'^' + self.tagsclass Rating:
        def __init__(self, userId:int, productId:int, score:float, timestamp:int):
            self.userId = userId
            self.productId = productId
            self.score = score
            self.timestamp = timestamp    def __str__(self) -> str:
            return self.userId +'^' + self.productId +'^' + self.score +'^' + self.timestampif __name__ == '__main__':
        myclient = pymongo.MongoClient("mongodb://127.0.0.1:27017/")
        mydb = myclient["goods-users"]
        # val attr = item.split("\\^")
        # // 转换成Product
        # Product(attr(0).toInt, attr(1).trim, attr(4).trim, attr(5).trim, attr(6).trim)
    
        shopproducts = mydb['shopproducts']
        with open('shopproducts.csv', 'r',encoding='UTF-8') as f:
            item = f.readline()
            while item:
                attr = item.split('^')
                product = Product(int(attr[0]), attr[1].strip(), attr[4].strip(), attr[5].strip(), attr[6].strip())
                shopproducts.insert_one(product.__dict__)
                # print(product)
                # print(json.dumps(obj=product.__dict__,ensure_ascii=False))
                item = f.readline()
    
        # val attr = item.split(",")
        # Rating(attr(0).toInt, attr(1).toInt, attr(2).toDouble, attr(3).toInt)
        userratings = mydb['userratings']
        with open('userratings.csv', 'r',encoding='UTF-8') as f:
            item = f.readline()
            while item:
                attr = item.split(',')
                rating = Rating(int(attr[0]), int(attr[1].strip()), float(attr[2].strip()), int(attr[3].strip()))
                userratings.insert_one(rating.__dict__)
                # print(rating)
                item = f.readline()

    在启动MongoDB服务后,运行Python代码,运行完成后,再通过Robo 3T查看数据库如下:

    包括名称、评论数、价格、地址、评分列表等,其中评论数、价格和评分均不规则、需要进行数据清洗。

    如需获取数据、代码等相关文件进行测试学习,可以直接点击加QQ群

    可以看到,最后得到了经过清洗后的规则数据。

    完整Python代码如下:

    # 数据读取f = open('商铺数据.csv', 'r', encoding='utf8')for i in f.readlines()[1:15]:
        print(i.split(','))# 创建comment、price、commentlist清洗函数def fcomment(s):
        '''comment清洗函数:用空格分段,选取结果list的第一个为点评数,并且转化为整型'''
        if '条' in s:
            return int(s.split(' ')[0])
        else:
            return '缺失数据'def fprice(s):
        '''price清洗函数:用¥分段,选取结果list的最后一个为人均价格,并且转化为浮点型'''
        if '¥' in s:
            return float(s.split('¥')[-1])
        else:
            return '缺失数据'def fcommentl(s):
        '''commentlist清洗函数:用空格分段,分别清洗出质量、环境及服务数据,并转化为浮点型'''
        if ' ' in s:
            quality = float(s.split('                                ')[0][2:])
            environment = float(s.split('                                ')[1][2:])
            service = float(s.split('                                ')[2][2:-1])
            return [quality, environment, service]
        else:
            return '缺失数据'# 数据处理清洗datalist = []  # 创建空列表f.seek(0)n = 0  # 创建计数变量for i in f.readlines():
        data = i.split(',')
        # print(data)
        classify = data[0]  # 提取分类
        name = data[1]  # 提取店铺名称
        comment_count = fcomment(data[2])  # 提取评论数量
        star = data[3]  # 提取星级
        price = fprice(data[4])  # 提取人均
        address = data[5]  # 提取地址
        quality = fcommentl(data[6])[0]  # 提取质量评分
        env = fcommentl(data[6])[1]  # 提取环境评分
        service = fcommentl(data[6])[2]  # 提取服务评分
        if '缺失数据' not in [comment_count, price, quality]:  # 用于判断是否有数据缺失
            n += 1
            data_re = [['classify', classify],
                       ['name', name],
                       ['comment_count', comment_count],
                       ['star', star],
                       ['price', price],
                       ['address', address],
                       ['quality', quality],
                       ['environment', env],
                       ['service', service]]
            datalist.append(dict(data_re))  # 字典生成,并存入列表datalist
            print('成功加载%i条数据' % n)
        else:
            continueprint(datalist)print('总共加载%i条数据' % n)f.close()

    更多编程相关知识,请访问:编程教学!!

    以上就是Python数据分析实战之 概述数据分析的详细内容,更多请关注其它相关文章!

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有