数据分析

Posted ziweijun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据分析相关的知识,希望对你有一定的参考价值。

什么是数据分析

  • 是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律
    • 使得数据的价值最大化
      • 分析用户的消费行为
        • 制定促销活动的方案
        • 制定促销时间和粒度
        • 计算用户的活跃度
        • 分析产品的回购力度
      • 分析广告点击率
        • 决定投放时间
        • 制定广告定向人群方案
        • 决定相关平台的投放
      • ......
  • 数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当的行动
    • 保险公司从大量赔付申请数据中判断哪些为骗保的可能
    • 支付宝通过从大量的用户消费记录和行为自动调整花呗的额度
    • 短视频平台通过用户的点击和观看行为数据针对性的给用户推送喜欢的视频

数据分析实现流程

  • 提出问题
  • 准备数据
  • 分析数据
  • 获得结论
  • 成果可视化

numpy模块

  • NumPy(Numerical Python) 是 Python 语言中做科学计算的基础库。重在于数值计算,也是大部分Python科学计算库的基础,多用于在大型、多维数组上执行的数值运算。

numpy的创建

  • 使用np.array()创建
  • 使用plt创建
  • 使用np的routines函数创建
  • 使用array()创建一个一维数组

import numpy as np arr_1 = np.array([1,2,3]) arr_1
array([1, 2, 3])

np.array([[1,2,3],[4,5,6]])
array([[1, 2, 3],
[4, 5, 6]])

  • 数组和列表的区别是什么?
    • 数组中存储的数据元素类型必须是统一类型
    • 优先级:
      • 字符串 > 浮点型 > 整数

np.array([[1,2,3],[4,5.5,6]])
array([[1. , 2. , 3. ],
[4. , 5.5, 6. ]])

import matplotlib.pyplot as plt img_arr = plt.imread(‘../imglibs/Aerith艾瑞丝 女孩子 花 唯美插图4k高清动漫壁纸.jpg‘) plt.imshow(img_arr)

  • 将外部的一张图片读取加载到numpy数组中,然后尝试改变数组元素的数值查看对原始图片的影响
    技术图片

plt.imshow(img_arr-20)
技术图片

np.ones(shape=(3,4))
array([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[1., 1., 1., 1.]])

np.linspace(1,100,num=20) #等差数列
array([ 1. , 6.21052632, 11.42105263, 16.63157895,
21.84210526, 27.05263158, 32.26315789, 37.47368421,
42.68421053, 47.89473684, 53.10526316, 58.31578947,
63.52631579, 68.73684211, 73.94736842, 79.15789474,
84.36842105, 89.57894737, 94.78947368, 100. ])

np.arange(1,100,step=5) #等差数列
array([ 1, 6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61, 66, 71, 76, 81,
86, 91, 96])

np.random.randint(0,100,size=(5,6))
创建一个5行六列得二维数组
array([[24, 30, 72, 15, 0, 54],
[22, 78, 50, 16, 52, 42],
[98, 39, 74, 98, 54, 0],
[85, 11, 52, 32, 89, 33],
[79, 85, 1, 19, 0, 47]])

numpy的常用属性

  • shape
  • ndim
  • size
  • dtype

bobo_arr.shape #返回数组的形状
(626, 413, 3)
bobo_arr.ndim #返回数组的维度
3
bobo_arr.size #返回数组元素的个数
775614
bobo_arr.dtype #返回的是数组元素的数据类型
dtype(‘uint8‘)

numpy的数据类型

技术图片
arr = np.array([1,2,3],dtype="int64") arr.dtype
对数据进行强转类型
dtype(‘int64‘)
arr.dtype
dtype(‘float32‘)

numpy的索引和切片操作

arr = np.random.randint(0,100,size=(4,6)) arr
array([[ 2, 57, 40, 33, 96, 65],
[69, 36, 33, 12, 64, 54],
[12, 1, 10, 30, 51, 67],
[26, 32, 10, 21, 84, 39]])
创建一个0~100得随机数二维数组为4行6列

arr[2]
array([12, 1, 10, 30, 51, 67])

  • 切片操作
    • 切出前两列数据
    • 切出前两行数据
    • 切出前两行的前两列的数据
    • 数组数据翻转
    • 练习:将一张图片上下左右进行翻转操作
    • 练习:将图片进行指定区域的裁剪

#切出前两行数据 arr[0:2]
array([[ 2, 57, 40, 33, 96, 65],
[69, 36, 33, 12, 64, 54]])

#切出前两列数据 arr[:,0:2] #逗号左边是数组的第一个维度,右边是第二个维度
array([[ 2, 57],
[69, 36],
[12, 1],
[26, 32]])

#切出前两行的前两列 arr[0:2,0:2]
array([[ 2, 57],
[69, 36]])

#行进行倒置 arr[::-1]
array([[ 2, 57],
[69, 36]])

#列倒置 arr[:,::-1]
反转行
array([[65, 96, 33, 40, 57, 2],
[54, 64, 12, 33, 36, 69],
[67, 51, 30, 10, 1, 12],
[39, 84, 21, 10, 32, 26]])

arr[::-1,::-1]
反转列行
array([[39, 84, 21, 10, 32, 26],
[67, 51, 30, 10, 1, 12],
[54, 64, 12, 33, 36, 69],
[65, 96, 33, 40, 57, 2]])

图片也可以进行反转
plt.imshow(img_arr[::-1,::-1])
技术图片

plt.imshow(img_arr[::-1])
技术图片

plt.imshow(img_arr[:,::-1,:])
技术图片

plt.imshow(img_arr[::-1,::-1,::-1])
技术图片

arr.reshape(6,4)
把数据转换为6行4列得数组
array([[22, 51, 3, 30],
[24, 96, 87, 91],
[39, 43, 69, 57],
[33, 49, 29, 72],
[98, 98, 37, 49],
[15, 48, 29, 38]])
arr.reshape((2,-1)
把数据转换为12列2行得数组不能随便转换必须等列等行
array([[22, 51, 3, 30, 24, 96, 87, 91, 39, 43, 69, 57],
[33, 49, 29, 72, 98, 98, 37, 49, 15, 48, 29, 38]])

np.concatenate((arr,arr),axis=1)
合并数组列
array([[22, 51, 3, 30, 24, 96, 22, 51, 3, 30, 24, 96],
[87, 91, 39, 43, 69, 57, 87, 91, 39, 43, 69, 57],
[33, 49, 29, 72, 98, 98, 33, 49, 29, 72, 98, 98],
[37, 49, 15, 48, 29, 38, 37, 49, 15, 48, 29, 38]])

np.concatenate((arr,arr),axis=0)
合并数据行
array([[22, 51, 3, 30, 24, 96],
[87, 91, 39, 43, 69, 57],
[33, 49, 29, 72, 98, 98],
[37, 49, 15, 48, 29, 38],
[22, 51, 3, 30, 24, 96],
[87, 91, 39, 43, 69, 57],
[33, 49, 29, 72, 98, 98],
[37, 49, 15, 48, 29, 38]])

arr_1 = np.random.randint(0,100,size=(5,6)) arr_1
array([[14, 12, 7, 39, 43, 62],
[66, 27, 16, 77, 68, 27],
[ 3, 81, 5, 45, 17, 95],
[39, 75, 76, 86, 99, 34],
[56, 4, 96, 96, 30, 59]])

arr_3 = np.concatenate((img_arr,img_arr,img_arr),axis=1) arr_9 = np.concatenate((arr_3,arr_3,arr_3)) plt.imshow(arr_9)
技术图片

`#### 常用的聚合操作

  • sum求和,max最大值,min最小值,mean平均值`

`#### 常用的数学函数

  • NumPy 提供了标准的三角函数:sin()、cos()、tan()
  • numpy.around(a,decimals) 函数返回指定数字的四舍五入值。
    • 参数说明:
      • a: 数组
      • decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置`

`#### 常用的统计函数

  • numpy.amin() 和 numpy.amax(),用于计算数组中的元素沿指定轴的最小、最大值。
  • numpy.ptp():计算数组中元素最大值与最小值的差(最大值 - 最小值)。
  • numpy.median() 函数用于计算数组 a 中元素的中位数(中值)
  • 标准差std():标准差是一组数据平均值分散程度的一种度量。
    • 公式:std = sqrt(mean((x - x.mean())**2))
    • 如果数组是 [1,2,3,4],则其平均值为 2.5。 因此,差的平方是 [2.25,0.25,0.25,2.25],并且其平均值的平方根除以 4,即 sqrt(5/4) ,结果为 1.1180339887498949。
  • 方差var():统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数,即 mean((x - x.mean())** 2)。换句话说,标准差是方差的平方根。`

































































































以上是关于数据分析的主要内容,如果未能解决你的问题,请参考以下文章

将代码片段插入数据库并在 textarea 中以相同方式显示

如何从 Firebase 获取数据到 Recyclerview 中的片段?

实用代码片段将json数据绑定到html元素 (转)

比较有用的php代码片段

片段中的Firebase数据不是持久的,会重新下载

将数据从底部工作表对话框片段传递到片段