首页 > 其他分享 >数据分析1

数据分析1

时间:2024-08-27 23:48:01浏览次数:5  
标签:数据分析 24 arr 98 np array Out

 

数据分析:是把隐藏在一些看似杂乱无章的数据背后的信息提炼出来,总结出所研究对象的内在规律

数据分析三剑客:Numpy,Pandas,Matplotlib

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

一、创建ndarray

1. 使用np.array()创建

  • 一维数据创建
import numpy as np
np.array([1,2,3])

  • 二维数组创建 
np.array([[1,2,3],[4,5,6]]) #就是列表中放列表

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

注意:

  • numpy默认ndarray的所有元素的类型是相同的
  • 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int
  • 使用matplotlib.pyplot获取一个numpy数组,数据来源于一张图片
In [17]:          
import matplotlib.pylab as plt
img_arr = plt.imread('./cat.jpg')
img_arr
    Out[17]:
array([[[231, 186, 131],
        [232, 187, 132],
        [233, 188, 133],
        ...,
        [100,  55,  52],
        [ 92,  48,  49],
        [ 85,  43,  44]],

       [[232, 187, 132],
        [232, 187, 132],
        [233, 188, 133],
        ...,
        [100,  55,  52],
        [ 92,  48,  49],
        [ 84,  42,  43]],

       [[232, 187, 132],
        [233, 188, 133],
        [233, 188, 133],
        ...,
        [ 99,  54,  51],
        [ 91,  47,  48],
        [ 83,  41,  42]],

       ...,

       [[199, 119,  82],
        [199, 119,  82],
        [200, 120,  83],
        ...,
        [189,  99,  64],
        [187,  97,  62],
        [187,  97,  62]],

       [[199, 119,  82],
        [199, 119,  82],
        [199, 119,  82],
        ...,
        [188,  98,  64],
        [188,  95,  62],
        [188,  95,  62]],

       [[199, 119,  82],
        [199, 119,  82],
        [199, 119,  82],
        ...,
        [188,  98,  64],
        [188,  95,  62],
        [188,  95,  62]]], dtype=uint8)
In [7]:          
plt.imshow(img_arr)
    Out[7]:
<matplotlib.image.AxesImage at 0x1ee32cd34e0>
  In [8]:          
plt.imshow(img_arr-100)
    Out[8]:
<matplotlib.image.AxesImage at 0x1ee331c3518>
   
  • 操作该numpy数据,该操作会同步到图片中
 

2. 使用np的routines函数创建

 

5) np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差数列

In [13]:          
np.linspace(0,100,num=6)
    Out[13]:
array([  0.,  20.,  40.,  60.,  80., 100.])
 

6) np.arange([start, ]stop, [step, ]dtype=None)

In [10]:          
np.arange(0,100,2)
    Out[10]:
array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32,
       34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66,
       68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98])
 

7) np.random.randint(low, high=None, size=None, dtype='l')

In [15]:          
#固定随机性
    #随机因子:系统的时间
np.random.seed(100)
arr = np.random.randint(0,100,size=(4,5))
arr
    Out[15]:
array([[ 8, 24, 67, 87, 79],
       [48, 10, 94, 52, 98],
       [53, 66, 98, 14, 34],
       [24, 15, 60, 58, 16]])
 

9) np.random.random(size=None)

生成0到1的随机数,左闭右开 np.random.seed(3)

In [19]:          
np.random.random(size=(4,5))
    Out[19]:
array([[0.56229626, 0.00581719, 0.30742321, 0.95018431, 0.12665424],
       [0.07898787, 0.31135313, 0.63238359, 0.69935892, 0.64196495],
       [0.92002378, 0.29887635, 0.56874553, 0.17862432, 0.5325737 ],
       [0.64669147, 0.14206538, 0.58138896, 0.47918994, 0.38641911]])
 

二、ndarray的属性

 

4个必记参数: ndim:维度 shape:形状(各维度的长度) size:总长度

dtype:元素类型

In [24]:          
arr.shape
arr.size
img_arr.size
arr.dtype
    Out[24]:
(4, 5)
 

三、ndarray的基本操作

 

1. 索引

一维与列表完全一致 多维时同理

In [26]:          
arr
    Out[26]:
array([[ 8, 24, 67, 87, 79],
       [48, 10, 94, 52, 98],
       [53, 66, 98, 14, 34],
       [24, 15, 60, 58, 16]])
In [29]:          
arr[1]
    Out[29]:
array([48, 10, 94, 52, 98])
 

2. 切片

一维与列表完全一致 多维时同理

In [30]:          
#获取二维数组前两行
arr[0:2]
    Out[30]:
array([[ 8, 24, 67, 87, 79],
       [48, 10, 94, 52, 98]])
In [ ]:          
#获取二维数组前两列
    In [32]:          
arr[:,0:2]  #arr[hang,lie]
    Out[32]:
array([[ 8, 24],
       [48, 10],
       [53, 66],
       [24, 15]])
In [10]:          
#获取二维数组前两行和前两列数据
    In [33]:          
arr[0:2,0:2]
    Out[33]:
array([[ 8, 24],
       [48, 10]])
In [34]:          
#将数组的行倒序
arr
    Out[34]:
array([[ 8, 24, 67, 87, 79],
       [48, 10, 94, 52, 98],
       [53, 66, 98, 14, 34],
       [24, 15, 60, 58, 16]])
In [35]:          
arr[::-1]
    Out[35]:
array([[24, 15, 60, 58, 16],
       [53, 66, 98, 14, 34],
       [48, 10, 94, 52, 98],
       [ 8, 24, 67, 87, 79]])
In [36]:          
#列倒序
arr[:,::-1]
    Out[36]:
array([[79, 87, 67, 24,  8],
       [98, 52, 94, 10, 48],
       [34, 14, 98, 66, 53],
       [16, 58, 60, 15, 24]])
In [37]:          
#全部倒序
arr[::-1,::-1]
    Out[37]:
array([[16, 58, 60, 15, 24],
       [34, 14, 98, 66, 53],
       [98, 52, 94, 10, 48],
       [79, 87, 67, 24,  8]])
In [38]:          
#将图片进行全倒置操作
plt.imshow(img_arr)
    Out[38]:
<matplotlib.image.AxesImage at 0x1ee32fbb160>
  In [40]:          
plt.imshow(img_arr[:,::-1,:])
    Out[40]:
<matplotlib.image.AxesImage at 0x1ee3304b588>
  In [42]:          
plt.imshow(img_arr[::-1,::-1,:])
    Out[42]:
<matplotlib.image.AxesImage at 0x1ee32fa8898>
  In [43]:          
#裁剪
plt.imshow(img_arr)
    Out[43]:
<matplotlib.image.AxesImage at 0x1ee34adbbe0>
  In [44]:          
plt.imshow(img_arr[100:340,170:565,:])
    Out[44]:
<matplotlib.image.AxesImage at 0x1ee345a22b0>
   

3. 变形

使用arr.reshape()函数,注意参数是一个tuple!

 
  • 基本使用

    1.将一维数组变形成多维数组

In [35]:          
arr_1.reshape((2,10))
arr_1.reshape((5,-1))
    Out[35]:
array([[ 8, 24, 67, 87],
       [79, 48, 10, 94],
       [52, 98, 53, 66],
       [98, 14, 34, 24],
       [15, 60, 58, 16]])
 

2.将多维数组变形成一维数组

In [34]:          
arr_1 = arr.reshape((20,))
arr_1
    Out[34]:
array([ 8, 24, 67, 87, 79, 48, 10, 94, 52, 98, 53, 66, 98, 14, 34, 24, 15,
       60, 58, 16])
 

4. 级联

  • np.concatenate()
 

1.一维,二维,多维数组的级联,实际操作中级联多为二维数组

In [58]:          
arr
    Out[58]:
array([[ 8, 24, 67, 87, 79],
       [48, 10, 94, 52, 98],
       [53, 66, 98, 14, 34],
       [24, 15, 60, 58, 16]])
In [61]:          
np.concatenate((arr,arr,arr),axis=1)
    Out[61]:
array([[ 8, 24, 67, 87, 79,  8, 24, 67, 87, 79,  8, 24, 67, 87, 79],
       [48, 10, 94, 52, 98, 48, 10, 94, 52, 98, 48, 10, 94, 52, 98],
       [53, 66, 98, 14, 34, 53, 66, 98, 14, 34, 53, 66, 98, 14, 34],
       [24, 15, 60, 58, 16, 24, 15, 60, 58, 16, 24, 15, 60, 58, 16]])
 

2.合并两张照片

In [63]:          
img_3 = np.concatenate((img_arr,img_arr,img_arr),axis=1)
img_9 = np.concatenate((img_3,img_3,img_3),axis=0)
plt.imshow(img_9)
    Out[63]:
<matplotlib.image.AxesImage at 0x1ee3456aa90>
   

级联需要注意的点:

  • 级联的参数是列表:一定要加中括号或小括号
  • 维度必须相同
  • 形状相符:在维度保持一致的前提下,如果进行横向(axis=1)级联,必须保证进行级联的数组行数保持一致。如果进行纵向(axis=0)级联,必须保证进行级联的数组列数保持一致。
  • 可通过axis参数改变级联的方向
In [64]:          
arr_1 = arr.reshape((5,4))
arr_1
    Out[64]:
array([[ 8, 24, 67, 87],
       [79, 48, 10, 94],
       [52, 98, 53, 66],
       [98, 14, 34, 24],
       [15, 60, 58, 16]])
In [65]:          
arr
    Out[65]:
array([[ 8, 24, 67, 87, 79],
       [48, 10, 94, 52, 98],
       [53, 66, 98, 14, 34],
       [24, 15, 60, 58, 16]]) 
 
np.concatenate((arr,arr_1),axis=1)
   
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-38-78b5b92d6f99> in <module>
----> 1 np.concatenate((arr,arr_1),axis=1)

<__array_function__ internals> in concatenate(*args, **kwargs)

ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)

 

四、ndarray的聚合操作

 

1. 求和np.sum 

 
arr.sum(axis=1)


array([265, 302, 265, 173])
           
### 2. 最大最小值:np.max/ np.min
同理
   

3.平均值:np.mean()

In [ ]:    

3. 其他聚合操作

Function Name    NaN-safe Version    Description
np.sum    np.nansum    Compute sum of elements
np.prod    np.nanprod    Compute product of elements
np.mean    np.nanmean    Compute mean of elements
np.std    np.nanstd    Compute standard deviation
np.var    np.nanvar    Compute variance
np.min    np.nanmin    Find minimum value
np.max    np.nanmax    Find maximum value
np.argmin    np.nanargmin    Find index of minimum value
np.argmax    np.nanargmax    Find index of maximum value
np.median    np.nanmedian    Compute median of elements
np.percentile    np.nanpercentile    Compute rank-based statistics of elements
np.any    N/A    Evaluate whether any elements are true
np.all    N/A    Evaluate whether all elements are true
np.power 幂运算
 

六、ndarray的排序

 

1. 快速排序

np.sort()与ndarray.sort()都可以,但有区别:

  • np.sort()不改变输入
  • ndarray.sort()本地处理,不占用空间,但改变输入
In [77]:          
np.sort(arr,axis=0)
    Out[77]:
array([[ 8, 10, 60, 14, 16],
       [24, 15, 67, 52, 34],
       [48, 24, 94, 58, 79],
       [53, 66, 98, 87, 98]])
In [74]:          
arr
    Out[74]:
array([[ 8, 24, 67, 87, 79],
       [48, 10, 94, 52, 98],
       [53, 66, 98, 14, 34],
       [24, 15, 60, 58, 16]])
In [75]:          
arr.sort(axis=0)
    In [76]:          
arr
    Out[76]:
array([[ 8, 10, 60, 14, 16],
       [24, 15, 67, 52, 34],
       [48, 24, 94, 58, 79],
       [53, 66, 98, 87, 98]])
In [ ]:  

标签:数据分析,24,arr,98,np,array,Out
From: https://www.cnblogs.com/machangwei-8/p/18383768

相关文章

  • 一张报表完成工厂生产综合数据分析,用这款免费报表工具就够了
    在当今快节奏的工业环境中,工厂管理者们越来越依赖于数据分析来优化生产流程、提高效率和降低成本。然而,传统的数据分析工具往往复杂难用,且动辄需要高昂的费用,这让很多工厂望而却步。不过最近本人发现了一款非常实用的报表工具,叫作山海鲸可视化(官网:shanhaibi.com/report),能让你在一......
  • 使用ChatGPT完成数据分析与可视化的全过程
    学境思源,一键生成论文初稿:AcademicIdeas-学境思源AI论文写作在数据驱动的时代,数据分析与可视化成为了洞察信息、支持决策的重要工具。ChatGPT可以显著提升这些任务的效率和准确性。本文将探讨如何运用ChatGPT来简化数据分析和可视化的过程,包括从数据清理、缺失值处理到生......
  • 足球数据分析-基于机器学习的足球比赛角球数预测模型构建
    文章目录前言一、数据收集二、数据预处理1、特征选择与构建2、数据清洗与预处理三、模型选择1、模型选择2、模型训练四、模型评估与优化1、模型评估2、模型优化:五、模型解释与部署1、模型解释2、模型部署六、代码解读及实现1.数据准备2.数据预处理3、模型构建4、数......
  • 机器学习/数据分析--通俗语言带你入门决策树(结合分类和回归案例)
    ......
  • 数据分析~2
    excel数据备份-隐藏看数据量级筛选ctrl+alt+LGMV-商品交易总额(包含未支付订单)UV-人(去重)与PV-点击量等CPC-每产生一次点击的成本数据透视表:添加新字段切片器(跟表联动的)或者筛选器数据透视图:组合图函数学习:sum函数视图进行分屏全部求和=SUM(......
  • 计算机毕业设计Spark+Tensorflow股票推荐系统 股票预测系统 股票可视化 股票数据分析
    1. 需求分析基于Spark的股票大数据分析及可视化系统是一个利用Spark分布式计算框架进行股票市场数据处理、分析和可视化的系统。它能够处理大规模的实时股票数据,包括股票价格、交易量、市场指标等,提供实时数据处理、数据可视化与展示和并提供相应决策支持。因此基于Spark的......
  • 计算机毕业设计Hadoop+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计
    目录1绪论2 相关技术与工具2.1 大数据技术概述2.2 hadoop介绍3地震数据分析3.1数据收集与处理4地震数据可视化4.1可视化技术概述4.2可视化设计原则4.3可视化实现与评估5系统设计与实现5.1登录页面5.25.3地震数据分析页面5.4地......
  • 数据分析~1
    数据分析基础概念:观测(取数据做报表)+实验(A/B实验)+应用(算法)观测:采集数据,基于系统日志获取数据称为埋点;通过传感器采集数据;爬虫;API接口存储数据,数据库展示数据,可视化设定标准+发现异常研究异常数据相关性或者建模推导相关性实验:提出假设,验证假设验证假设有数据查看数......
  • python数据分析中包含很多图像?如何使用这些图像进行数据分析呢?
    在Python中进行数据分析时,选择不同的图案来分析数据可以帮助我们更好地理解数据的特征和关系。以下是一些常见的数据分析图形和它们的应用场景:条形图(BarPlot):适合表示类别型数据的分布或比较不同类别的数据。可以使用水平或垂直的条形图。折线图(LinePlot):适合表示随时间变化......
  • 计算机毕业设计推荐- 基于Python的高校岗位招聘数据分析平台
    ......