关于数据分析的组件之一:numpy

ndarray的属性 4个必记参数:

ndim:维度

shape:形状(各维度的长度)

size:总长度

dtype:元素类型

一:np.array()产生n维数组

一维:方法一:arr1 = np.array([1,2,3])

方法二:arr6 = np.full((6),fill_value=666)

方法二结果:array([666, 666, 666, 666, 666, 666])

(一行六列)

二维:方法一:arr2 = np.array([[1,2,3],[4,5,6]])

方法二:arr7 = np.full((6, 7), fill_value="5")

(6行7列的二维数组,所有的值全是"5")

三维:方法一:arr3 = np.array([[[1,2,3],[4,5,6]]])

方法二:arr7 = np.full((5, 6, 3), fill_value="ggg")

(5行二维数组,每个二维数组里面是6行3列的1维数组)

关键点:[]的层数即是维度数

二.数据类型优先级:tr > float > int

numpy默认ndarray的所有元素的类型是相同的

•特列:其中一个数组包含优先级高的数据类型时,所有的数据将会全部转化成优先级高的数据类型。

•列如:arr4 = np.array([[1, 2, 3], [4, 5, "five"]])

•打印结果是:array([['1', '2', '3'],['4', '5', 'five']], dtype='

三.matplotlib模块

import matplotlib.pyplot as plt

1.使用imread将图片变成多维数组,使用imshow展示图片

图片的数组是三维的分别为:高,宽,灰度值(纵向,横向,灰度值)

img_arr = plt.imread('./cat.jpg')

plt.imshow(img_arr)

2.将数组进行加减来改变灰度值:plt.imshow(img_arr - 20)

3.查看数组维度:img_arr.ndim

4.查看数组横向宽度,纵向高度,维度三个参数:img_arr.shape

四.产生等差一维数组

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

1. np.linspace(1, 100, num=10)结果是:1开头,100结尾,将1到100分成十个数,array([ 1., 12., 23., 34., 45., 56., 67., 78., 89., 100.]))

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

np.arange(1, 100, 8)结果:此方法结尾数未被限定(array([ 1, 9, 17, 25, 33, 41, 49, 57, 65, 73, 81, 89, 97])

五.产生等差n维数组

np.random.randint(0,100,size=(5,6)) 产生5行6列的二维数组

结果:array([[23, 88, 34, 82, 17, 26],

[74, 19, 56, 26, 70, 87],

[25, 60, 10, 91, 49, 14],

[84, 63, 37, 83, 26, 42],

[94, 87, 54, 72, 19, 26]])

六.生成的一维数组里是随机数(size决定元素的数量)

生成0到1的随机数,左闭右开:np.random.random(size=5)

结果是 :array([0.68491561, 0.84337526, 0.61612483, 0.56318751, 0.36816219])

七.nadarray(多为数组)的基本操作

1.索引 (与列表索引操作一致)

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

取值 :arr[0]得到 array([1, 2,3], dtype='

改值 :改一个数组arr[0] = [4,5,6],改某一个具体的值arr[0][1]=2

arr1 + arr2 两数组相加,对应索引位置的值相加

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

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

arr1 + arr2

结果array([[ 2, 4, 6],[ 8, 10, 12]])

2.切片

1.获取二维数组前两行:arr[0:2]

2.获取二维数组前两列:arr[:, 0:2]

3.获取二维数组前两行和前两列数据:arr[0:2, 0:2]

4将数据反转arr[::-1,::-1]

1.将数组的行倒序

arr[::-1]#

2.列倒序

arr[:, ::-1]

八.数组的行列数组个数的转化

使用:arr3.reshape(行,列),

注意点:arr3.reshape(4, -1) # -1这个值表示自动计算行数,自动匹配,

•arr3.reshape(-1, 4) # -1这个值表示自动计算行数,自动匹配, 是一个万能的参数

总结就是:(前提条件是: 列数 x行数 = 总元素数)

•行为-1,则列先满足(先形成四列再得出行),行数 = 总元素个数/列数。

•列为-1,则行先满足(先形成四行再得出列),列数 = 总元素个数/行数。

九.级联(多维数组的拼接)

进行级联, axis参数0表示列(纵向)拼接, 1表示行(橫向)拼接

np.concatenate((a1, a2),axis=0)

级联需要注意的点:

- 级联的参数是列表:一定要加中括号或小括号

- 维度必须相同

- 形状相符:在维度保持一致的前提下,如果进行横向(axis=1)级联,必须保证进行级联的数组行数保持一致。如果进行纵向(axis=0)级联,必须保证进行级联的数组列数保持一致。

- 可通过axis参数改变级联的方向

十.切分(与级联相反)

np.split(a1, [1, 1, 3], axis=0) 把a1看作整体,把第一行下面为界限切成两个数组,再把这两个堪称一个整体,在第一行下面切一下,进行分割,因为第一行下面是空隙,所以会切出来一个空,再看成整体(空数组不算一行)从第三行的下面切割,形成行数为: 1, 空, 2, 2, 的数组

axis=0横向切,唯为1纵向切。

样式:[array([[97, 56, 62, 57, 90, 22]]),

array([], shape=(0, 6), dtype=int32),

array([[97, 84, 26, 15, 14, 85],

[44, 7, 78, 57, 60, 16]]),

array([[25, 10, 67, 72, 54, 70],

[37, 22, 41, 78, 92, 50]])]

切图片:直接取高,宽的范围,切片img_arr[60:390, 110:600]

十一.多维数组的聚合(加减乘除,平方,求最大,和值,最小等)

a1.sum()

最大最小值:np.max/ np.min

### 3. 其他聚合操作

Function NameNaN-safe VersionDescription

np.sumnp.nansumCompute sum of elements

np.prodnp.nanprodCompute product of elements

np.meannp.nanmeanCompute mean of elements

np.stdnp.nanstdCompute standard deviation

np.varnp.nanvarCompute variance

np.minnp.nanminFind minimum value

np.maxnp.nanmaxFind maximum value

np.argminnp.nanargminFind index of minimum value

np.argmaxnp.nanargmaxFind index of maximum value

np.mediannp.nanmedianCompute median of elements

np.percentilenp.nanpercentileCompute rank-based statistics of elements

np.anyN/AEvaluate whether any elements are true

np.allN/AEvaluate whether all elements are true

np.power 幂运算

十二.ndarray(多维数组)的排序

np.sort(a1, axis=0),最小的行往上移

np.sort(a1, axis=1),最小的列往左移

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

np.sort(a1,axis=0)不改变输入

a1.sort()本地处理,不占用空间,但改变输入

二.数据分析组件之pandas(Series和DataFrame)

import pandas as pd

from pandas import Series,DataFrame

1.使用列表创建Series 隐式索引 取值s1[0] name为表名

s1 = Series(data=[1,2,3,4,5],name='888')

使用列表创建Series 显式索引 取值s2['a']

s2 = Series(data=[1,2,3,4,5], index=['a','b','c','d','e'],name='888')

2. 由字典创建:不能在使用index.但是依然存在默认索引

dic = {

"English": 100,

"Math": 30

}

s4 = Series(data=dic)

3.Series的索引和切片

可以使用中括号取单个索引(此时返回的是元素类型),或者中括号里一个列表取多个索引(此时返回的是一个Series类型),隐式和显式一样。

取值方式一:

如:s2["数学"]渠取到具体分数

而:s2[["语文", "英语"]] 取到类似表格的:

语文150

英语 150

dtype: int64

取值方式二:

s2.loc["数学"] # 使用loc方法通过显式索引取值

s2.iloc[1] # 使用iloc方法通过隐式索引取值

s2.iloc[[1,3]]当有此时是取一和三

以上两种取值方式都将可以

取值方式三:

s2.iloc[0:3] 右端取不到

s2.loc["语文":"理综"]

4.增加值:

可以把Series看成一个定长的有序字典向Series增加一行:相当于给字典增加一组键值对:s2["aaa"] =1000

可以通过 shape,size,index, values等得到series的属性

s2.shape

可以使用s.head(),s.tail()分别查看前n个和后n个值

使用unique()对Series元素进行去重

series对象间可以相加(相同索引的值相加)

可以使用相关的数据清洗方法: pd.isnull(),pd.notnull(),或s.isnull(),notnull()函数检测缺失数据

2、DataFrame

DataFrame是一个【表格型】的数据结构。DataFrame由按一定顺序排列的多列数据组成。设计初衷是将Series的使用场景从一维拓展到多维。DataFrame既有行索引,也有列索引。

1)DataFrame的创建

DataFrame是由多个Series组成的

最常用的方法是传递一个字典来创建。DataFrame以字典的键作为每一【列】的名称,以字典的值(一个数组)作为每一列。

此外,DataFrame会自动加上每一行的索引。

使用字典创建的DataFrame后,则columns参数将不可被使用。

同Series一样,若传入的列与字典的键不匹配,则相应的值为NaN。

取值:

# 获取前两列df[0:2],

(1) 对 列 进行索引

- 通过类似字典的方式 df['q']

- 通过属性的方式 df.q

修改列索引:

# 修改列索引

df.columns = ["zhangsan", "lisi"]

(2) 对行进行索引

- 使用.loc[]加index来进行行索引

- 使用.iloc[]加整数来进行行索引

方法一:df.loc["数学"]["zhangsan"]取到具体某一行的某一列

方法一:df.loc["数学", "zhangsan"]取到具体某一行的某一列

python纵向数据分析_python数据分析三个重要方法之:numpy和pandas相关推荐

  1. python入门三剑客_python数据分析三剑客基础之matpoltlib初解

    一.什么是matplotlib? python的底层绘图工具,主要做数据可视化图表,源自matplot. 二.为什么要学matplotlib? 1.它能将数据进行可视化,更直观的呈现出来 2.它能让数 ...

  2. python数据分析图_Python数据分析:手把手教你用Pandas生成可视化图表的教程

    大家都知道,Matplotlib 是众多 Python 可视化包的鼻祖,也是Python最常用的标准可视化库,其功能非常强大,同时也非常复杂,想要搞明白并非易事.但自从Python进入3.0时代以后, ...

  3. python 统计分析 包_Python 数据分析包:pandas 基础

    pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据 ...

  4. python 卡方分布值_python数据分析探索变量之间的关系

    探索变量之间的关系 引言 深入探索分析数据价值有几个重要步骤:①变量的分布检验,②探索变量间的关系,③建立关系模型,④评估,⑤总结结论与建议.接下来看看数据分析的重要一环–「探索变量间的关系」. 1 ...

  5. python药学应用_Python数据分析实例一:医院药品销售数据

    前面已经分享过python的基础语法,以及数据分析领域最常用的两个包:Numpy和Pandas(戳下面的链接),下面将用一个实际案例:<朝阳医院2018年销售数据.xlsx>和大家分享一下 ...

  6. python药店销售数据分析_Python数据分析实例一:医院药品销售数据

    前面已经分享过python的基础语法,以及数据分析领域最常用的两个包:Numpy和Pandas(戳下面的链接),下面将用一个实际案例:<朝阳医院2018年销售数据.xlsx>和大家分享一下 ...

  7. python数据统计_Python数据分析--Iris数据集实战

    Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 本次主要围绕Iris数据集进行一个简单的数据分析, 另外在数据的可视 ...

  8. python 数组 运算_python数据分析(二) python numpy--数组和矢量运算--数组对象

    Numpy numpy是数值计算最重要的基础包,几乎所有的科学运算的模块底层所用的都是numpy数组. Numpy本身没有提供多么高级的数据分析功能,他所提供的功能主要是: 1.具有矢量算术运算(用数 ...

  9. python数据分析软件_Python数据分析工具

    Numpy Python没有提供数组功能,虽然列表可以完成基本的数组功能,但他不是真正的数组.Numpy内置函数处理速度是c语言级别,因此尽量使用内置函数,避免出现效率瓶颈的现象. Numpy的安装: ...

最新文章

  1. 第三次学JAVA再学不好就吃翔(part59)--冒泡排序选择排序以及二分查找
  2. 线程打印_面试题:用程序实现两个线程交替打印 0~100 的奇偶数
  3. LeetCode 1133. 最大唯一数
  4. 最后关于Pipeline完整的图如下:
  5. css hack惯用手法
  6. 【笔记目录】南邮(通达)计算机专业基础
  7. 帆软报表重要Activator之DesignerInitActivator之三NorthRegionContainerPane 主要是设计器菜单栏的部分
  8. 使用 CometD、Apache 和 Camel 的 502 代理错误
  9. 使用explain查询select查询语句执行计划
  10. 从delegate到lambda表达式
  11. 用pyqt5做个图书馆数据管理客户端!--pyqt+mysql的使用(入门必看!)
  12. 每天学点Python Cookbook(三)
  13. Java关流对流对象有什么影响_Java面试题全集(1.4)
  14. CAJ是什么格式的文档,怎么打开和使用?
  15. GRPC: 如何优雅关闭进程(graceful shutdown)?
  16. php7 pecl安装,PHP7安装pecl:memcached扩展
  17. oracle 列转行字符串,oracle 字符串列转行
  18. Lazada开店步骤Lazada开店需要条件
  19. 注意力模型直观理解(Attention Model Intuition)
  20. 关于爱国者黑客的追踪报道..

热门文章

  1. 程序员的崩溃,是从“你薪资比我高”开始的!
  2. 阿里Java面试答案【283页PDF文档免费领】
  3. 原创 | 为什么阿里巴巴要求谨慎使用ArrayList中的subList方法
  4. 入行二十年的一些认知
  5. 阿里高专王夕宁:Istio网关之南北向流量管理
  6. 一些Chrome 调试小技巧汇总
  7. JEEWX捷微企业号管家系统发布
  8. pheatmap, gplots heatmap.2和ggplot2 geom_tile实现数据聚类和热图plot
  9. iOS屏幕旋转 浅析
  10. MBR与GPT的分区结构