3.成为数据分析师之路
成为数据分析师的自我修养:
数据分析师需要具备的技能如下:
在不同行业数据分析从业人员的工作内容和职责:
数据分析很重要的学科基础是数学,但是数学不好也没有关系,可以用Python来帮助学习:
Python不仅是一门编程语言,而且是数据挖掘机器学习等技术的基础,方便建立自动化的工作流;
Python入门不难,它对数学要求并不是太高,重要的是需要知道如何用语言表达一个算法逻辑;
Python有很多封装好的工具库和命令,需要做的是用哪些数学方法解决一个问题,并构建出来。
要想快速入门Python数据分析,就要使用好Python相关的工具包:
(1)Python最大的特点是拥有一个巨大而活跃的科学计算社区,采用python进行科学计算的趋势也越来越明显。
(2)由于Python有不断改良的库,使其成为数据处理任务的一大代替方案,结合其在通用编程方面的强大实力,完全可以只是用Python这一种语言去构建以数据为中心的应用程序,其中:
(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系统
./configure
脚本make
make install
(2)Window系统
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的包管理常见命令如下:
包管理命令意义 | 包管理命令 |
---|---|
安装matplotlib | conda 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.2 | conda 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数据分析实战之 概述数据分析的详细内容,更多请关注其它相关文章!