
Hi,我是宋宋,欢迎来到 —— 数据分析的部分 :)
接下来的日子里,由我带领各位在Python的数据分析之路继续行走,您有什么事情可以随时扣我,还请多多关照哦!

现在准备好了吗?我们准备启程喽!
前几天有位朋友过来找我帮忙,说他们公司针对新能源汽车的e友模块要新上线,希望能帮忙做一次推广。
我一脸懵比,朋友开始介绍起来,随着新能源汽车的不断普及,像充电桩地图,充电优惠、交通违章、保险购买和洗车等服务成为各位车主关注的问题。
朋友说他们有之前很多车友的信息,希望能通过分析更精准的向车友进行推广。
通过获取车友的是否有车,汽车品牌,历史购买商品和浏览记录分析。
经分析得出:目前该平台新能源车主已经占了很大一部分,有意向的也占了一定比重,这样就可以很好的进行定向推广了。
最后我们确定了推广的时间和推广文案,最终在这次推广活动中获得了非常满意的点击率,也通过分享引流了新的客户。
现如今各家企业都拥有了自己的数据分析团队,形象的比作是:企业的贤内助。
每年年底的账单出来后,有没有发现你的money都花到哪里了,仙女们可能大部分是美妆,服装,帅哥们可能大部分花在电子产品、运动鞋服上,你是吗?
总之,从数据里面寻求真正有价值的信息,并对实际的工作或者生活有一定的指导作用,这个过程就叫数据分析。
选择题:
数据分析的语言你听说过几种?
A、 说真的除了python,其他都没有听说呢!
B、 除了python之外,还听说过R和go也可以
C、 呜呜~~一个都没有听说过
回答A、 Python是既灵活又简单的语言,Python是直观的,以及它的生态系统近年来急剧增长,使得它更能够在统计分析方面发光。
回答B、 你好厉害,做了这么多的学习准备工作,使用R语言,只需要短短的几行代码,你就可以在复杂的数据集中筛选,但是R正在一点点地过时,因为它的缓慢和处理大型数据集的笨重。go语言在高性能分布式系统领域有很好的开发效率,可以主要用于服务器端的开发。
回答C、 没有关系,加油努力总是没有错滴。
掌握一门编程语言有时候可以让你更加高效的处理几十万甚至上亿条数据。
Python目前已经成为数据科学领域最为重要的编程语言。
社区则提供了丰富的第三方数据分析工具包,Pandas、Numpy、Matplotlib、Seaborn等,可以让我们的数据分析更加轻松。

NumPy 是一个 Python 包。它代表 “Numeric Python”。它是一个由多维数组对象和用于处理数组的例程集合组成的库。专门对数值运算进行优化,最大的优势是快。Pandas底层数据结构采用NumPy来实现。
Pandas是Panel Data Analysis的缩写,是目前最为流行的Python数据分析工具。该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。最初被作为金融数据分析工具由全球资产管理公司AQR于2008年4月开发,并于2009年底开源出来。
Matplotlib和Seaborn是最为常用的数据可视化的工具包,Matplotlib是一个Python的2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过Matplotlib,开发者可以仅需要几行代码,便可以生成绘图。
Seaborn是一个使用Python制作统计图形的库,基于matplotlib之上的封装,使绘图更简洁,通常会配合pandas读写数据和matplotlib扩展绘图一起使用。
接下来我们将着重以上工具包的在数据分析中的使用。
开始之前简单介绍下我们学习使用的工具:


来看一下全新编辑器
代码输入框:在这里输入我们操作的所有代码,程序员的大舞台。
终端展示:展现结果的部分,可以是文字的也可以是图形展示。
代码运行:点击运行,就可以运行选中的代码框中的代码,并在终端展示结果。
代码操作:+,上下箭头可以随意增加代码框,上下移动代码,当然也可以复制,粘贴代码。
介绍该编辑器的主要目的:可以将分析后的可视化图形完美的展现给开发者,更加直观。
Numpy简介
Numpy之ndarray数组和属性
Numpy之索引和切片
Numpy简介:
NumPy 是什么?

NumPy是使用Python进行科学计算的基础软件包。它是一个由多维数组对象和用于处理数组的例程集合组成的库。 列表list可以存放数据,但是存放的数据有限,数据的处理能力也不强。由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针,对于数值运算来说这种结构显然比较浪费内存和CPU计算时间。
所以numpy就这么登场了,NumPy是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵。
NumPy的主要对象是同种元素的多维数组。
安装方法:
pip install numpy 引用方法:
import numpy as np Numpy之Ndarray 对象
NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。该对象是⼀个快速⽽灵活的⼤数据集容器。你可以利⽤这种数组对整块数据执⾏⼀些数学运算,其语法跟标量元素之间的运算⼀样。ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。
Ndarray对象的创建:
使用 np.array()函数把 python传入的序列对象创建成数组。如下:
numpy.array(object)其中object是必须填写的参数,object可以是一个数组或者任何嵌套的序列。在下面的代码框中,我们使用代码创建出一套英雄团队:['美国队长','钢铁侠','绿巨人','黑寡妇','蜘蛛侠']。点击运行按钮,检查你的成果。
# 导入numpy数据包
import numpy as np
# 创建一个ndarray数组
np.array(['美国队长','钢铁侠','绿巨人','黑寡妇','蜘蛛侠']) 结果:

复制代码试一下
这组数据里面不仅有英雄,还有漫威中最大的坏蛋:灭霸,有了灭霸的加入你也试一下,看看有什么不同。
# 导入numpy数据包
import numpy as np
# 创建一个ndarray数组
np.array([['美国队长','钢铁侠','绿巨人','黑寡妇','蜘蛛侠'],['灭霸','奥创','基利安','卡西利亚斯','冬兵']]) 结果如下:

复制代码试一下
2. .数据可以是现有的英雄们,也可以自己“假装”构造出来的数据,这些数据在我们需要的时候可以随时上场。
大将1:np.arange(start, stop, step)函数可以通过指定开始值、终值、步长来创建一个等差数列, 不包括终值;
大将2: np.linspace(start, stop, num,endpoint)函数可以通过指定开始值、终值、元素个数创建等差数列, 通过endpoint参数指定是否包括终值,默认包括;
大将3: zeros()、ones()函数可以创建指定的数组, 参数使用元组或列表, 大家一般都使用元组.
先感受一番大将的风采,使用np.arange创建一个指定范围的数列。
# 导入numpy数据包
import numpy as np
# 使用arange()创建数组,类似range()函数
x = np.arange(6)
x 结果:

还可以指定起始,结束和步长值,看一看:
# 导入numpy数据包
import numpy as np
# 使用arange()创建数组,类似range()函数
x = np.arange(1,10,3)
x 结果:

小学的时候学过等差数列或者给你一组数据让你找规律?那时候没有掉太多头发吧?😂
使用numpy.linespace()可以轻松的创建等差数列,了解下吧!
# 导入numpy数据包
import numpy as np
# 使用linspace()创建等差序列,从1到20之间等差的6个数
np.linspace(1,20,6) 将代码复制过去执行下,也可以尝试改一下里面的参数试试

写完这些代码是不是感觉数据分析这么简单吗?有点简单的没用😂
其实不然,arange()可以在后面创建索引的时候用到,linesapce()在可视化绘图中会用到,知识就是点点滴滴的积累嘛!加油朋友们!
有了前面两位大将,这个就稍(xue)微介绍下吧!
# 导入numpy数据包
import numpy as np
# 使用ones()创建全部都是1组成的数列,里面的参数(2,2)表示形状
np.ones((2,2))
结果如下:

同理zeros()是全部是由“0”组成的指定形状的数组.
Ndarray对象的属性
一辆汽车我们描述它,会通过品牌,车牌,颜色,价格等描述。编程中一辆车的品牌和车牌就是属性。
当我们创建完了ndarray对象之后,它也是有属性的,有哪些常用的属性呢?
# 导入numpy数据包
import numpy as np
# 使用ones()创建全部都是1组成的数列,里面的参数(2,2)表示形状
n = np.ones((2,2))
# 数组的形状
n.shape
# 数组的元素个数
n.size
# 数组的维度
n.ndim
# 数组中数据的类型
n.dtype 结果如下:

属性是辅助各位更加清楚的了解ndarray的结构的,可以更加清晰的了解ndarray。
Ndarray的索引和切片
索引
我们去电影院都会有座位号码,比如说5排10座,我们去医院看病也会有号,比如说上午第20号等。
我们的数据存在ndarray中,如何能找到对应的数据呢?
其实他们也是有“号码”的,这个号码我们称作:索引。只不过是现在的“号码”是从0开始往后数的,如果我们里面保存了10个一维数据,则对应的编号是:0,1,2,... 9
如果我们想获取获取索引号码对应的内容,则借助于ndarray对象和[ ],格式是:对象名[索引号], 比如n[0],n[10]等
下面我们一起看一下吧!
# 导入numpy数据包
import numpy as np
# 创建一个ndarray数组
n = np.arange(1,50,5)
print(n)
print(n[0])
print(n[3]) 运行上面代码可见可见下面👇的结果:

切片
获取一个数据可以通过索引如n[0],如果想获取多个数据呢?这里我们会使用到:切片。
Ndarray的切片我们该如何使用呢?
大家对列表的切片概念还有印象吗?比如:numbers = [12,66,90,18,26,33,41,72],获取90以后的数字即[18,26,33,41,72],我们可以通过列表的切片:numbers[4:]获取。
Ndarray一维数组的使用同列表,看下如下代码:
# 导入numpy数据包
import numpy as np
# 创建一个ndarray数组
n = np.arange(1,50,5)
print(n)
print(n[2:8])
print(n[:5])
print(n[6:]) 结果如下:

是不是很简单啊!但是如果是二维的数组大家知道如何获取数据吗?看一下下面的二维数组吧!
将二维的数组理解成一个表格,其中n[行x,列y]表示第x行y列的数据。类似下面的表格:

我们要获取里面的8,或者获取[[5,6],[8,9]]
# 导入numpy数据包
import numpy as np
# 创建一个ndarray数组
n = np.arange(1,13).reshape(4,3)
print(n)
print(n[2,1])
print(n[:,1])
print(n[2,:])
print(n[:,:2]) 运行结果如下:

小伙伴们,现在如果给你一个切片你能知道结果吗?尝试一下n[:1,:2]的结果。
本节总结
数据分析是不是很简单。但是千万不要小瞧这些啊,这可是盖一座大楼的基石,来我们看看学习了哪些内容吧!

下节预告
