• 数据分析


    什么是数据分析

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

    数据分析实现流程

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

    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)。换句话说,标准差是方差的平方根。`
  • 相关阅读:
    centos mongo数据库搭建
    闪屏页白屏或者显示旧图
    在Sqlserver下巧用行列转换日期的数据统计
    读 《.Net 之美》解析.Net Remoting (应用程序域)-- Part.1
    MVC的自定义动作过滤器(一)
    【算法】快排
    【编程范式】C语言1
    排序
    日志记录类
    邮箱发送类
  • 原文地址:https://www.cnblogs.com/ziweijun/p/13207766.html
Copyright © 2020-2023  润新知