思维导图:Numpy+Pandas

附:文本结构

Numpy+Pandas

Numpy

基于矩阵运算的模块

数组转矩阵

A = np.array([[1,2,3],[2,3,4]])

矩阵属性

ndim

维度

shape

形状

size

元素个数

创建矩阵

array

数组形式初始化

dtype

int

int32

float

float32

ones

全1的矩阵

zeros

全0的矩阵

empty

所有元素都接近0的矩阵

np.random.random

随机生成指定形状的矩阵

arange

(start , end , step)

区间

[start,end)

步长

step

默认为 1

linspace

(start , end , num)

区间

[start,end]

点的数量

num

reshape

变形

基本运算

加减

N次方

A**N

普通乘法(同位置元素相乘)

*

矩阵乘法(前者的行元素乘后者的列元素)

写法1

np.dot(A, B)

写法2

A.dot(B)

基本运算2

sum、min、max

axis=0

按列计算

axis=1

按行计算

默认不设置axis

对全部元素

argmin、argmax

求最值的索引

mean、average

求均值

median

中位数

cumsum

累加

[1,2,3,4]=>[1,3,6,10]

diff

累差

[1,2,3,4]

[1,1,1]

后项与前项的差值

nonzero

找出非零项,并将N维度索引分开成N个一维矩阵表示

sort

从小到大排序

可控制axis,默认是axis=1(行)

转置

方法1

A.T

方法2

np.transpose(A)

clip(Array, Array_min, Array_max)

将超出边界的值调整为指定的边界值,未超出的值继续保持原值

索引

表示方式

A[I][j]

A[i, j]

切片操作

start:end

A[2,3:5]

行索引为2,列索引为区间[3,5)

A[:,:5]

前5列的所有数据

A[:5]

前五行的所有数据

开始索引:结束索引

空值代表边界值

::n

A[::3]

跳步,每3个数取第一个数

A.flatten()

展开为1维矩阵

A.flat

是一个迭代器

for a in A.flat

遍历元素

合并

np.vstack(A,B)

纵向合并

[[A],[B]]

np.hstack(A,B)

横向合并

[A,B]

np.concatenate((A,B,B,A),axis=1)

多个矩阵纵向合并

np.concatenate((A,B,B,A),axis=0)

多个矩阵横向合并

一维矩阵(n个元素)的转置

先转成二维

shape=(1,n)

A[np.newaxis,:]

A.reshape(1,A.size)

shape=(n,1)

A[:,np.newaxis]

A.reshape(A.size,1)

再进行转置

newA.T

分割

等量分割

纵向分割

np.split(A,2,axis=1)

np.vsplit(A,2)

横向分割

np.split(A,2,axis=0)

np.hsplit(A,2)

每个分块必须等量,否则报错

不等量分割

纵向分割

np.array_split(A,2,axis=1)

横向分割

np.array_split(A,2,axis=0)

分块可不等量

赋值

浅拷贝

B=A

B和A是同一个对象,变化同步

深拷贝

B=A.copy()

B和A是不同对象,变化不同步

Pandas

主要两个数据结构

Series

pd.Series(indexA,valueA)

左边索引,右边值

pd.Series(valueA)

不配置索引,则索引从0开始++

DataFrame

每个列的类型可不同

df = Pandas.DataFrame(value, 行索引标签, 列索引标签)

value

二维数组或矩阵

行索引标签

行索引,类似数据库表的行号

列索引标签

列索引,即表头,类似数据库表的字段名

df = Pandas.DataFrame(value)

自动生成索引

df[‘列标签’]

按列索引取出一列

df.index

df.columns

df.value

df.describe()

数据情况

df.sort_index(axis=1, ascending=False)

对索引排序,升序

ascending=True为降序

df.sort_values(by=‘列标签’)

对某列值排序

常用方法

pd.date_range('20160101',periods=6)

生成6个日期

选择数据

df[位置:位置]

[s,e)

df[‘标签’:‘标签’]

[s,e]

df[‘列标签’] = df.column

选择某列

df.loc(‘行标签’,‘列标签’)

根据标签,选择某行,某列

可配合 : 使用

df.iloc(行位置,列位置)

根据位置,选择某行,某列

可配合 : 使用

df.ix(行位置,‘列标签’)

混合标签和位置,选择某行,某列

可配合 : 使用

df[df.‘列标签’<8]

使用判断进行筛选

修改数据

选择数据=新赋值

新增数据

df[‘newColumn’]=pd.Series(......)

为DataFrame添加一列新Series

长度需要对齐

删除NaN的数据

df.dropna(axis=0,how=‘any’)

将有NaN值的行删除

df.dropna(axis=1,how=‘all’)

将整列全是NaN的列删除

替换NaN的数据

df.fillna(value=0)

将NaN替换成0

判断是否是NaN

df.isnull()

对每个元素分别进行判断

pd.any(df.isnull)

含有NaN就是True

读取文档

data = pd.read_csv(‘filepath’)

读取csv

支持的格式

csv

Excel

json

html

pickle

......

data. to_pickle(‘data.pickle’)

转成pickle持久化数据存在磁盘

合并

np.concat([df1, df2, df3], axis=1, ignore_index=True, join=‘inner’)

默认axis=0

纵向

默认ignore_index=False

索引会重复

默认join=‘outer’

外连接,不抛弃对不上号的部分

内连接则会抛弃

join_axes = [df1.index]

依据df1的index进行合并

df1没有的部分将被抛弃

df1.append([df2, df3])

只有纵向合并

np.merge(left, right, on=[‘key1’, ’key2’], how=‘left’)

类似数据库的leftTable left join rightTable on leftTable.key1=rightTable.key1 and ...

how

inner

默认

outer

left

right

indicator=True

会把合并情况放在最后一列

indicator=‘命名’

会把合并情况放在最后一列,并给出列名

suffixes=['_boy', '_girl']

为标签添加后缀

区分数据所属,防止标签重叠

pd.merge(left, right, left_index=True, right_index=True, how='outer')

根据索引号合并

画图

import matplotlib.pyplot as plt

plt.plot([xx],[yy])

设置方式1

data = pd.Series()

data.plot()

设置方式2

data = pd.DataFrame

plt.show()

渲染

图类型

plot.scatter

plot.bar

plot.box

plot.hist

plot.area

plot.kde

plot.hexbin

配置

ax = data.plot.scatter(x='A',y='B',color='DarkBlue',label='Class1')

data.plot.scatter(x='A',y='C',color='LightGreen',label='Class2',ax=ax)

ax=ax

将此图画在ax同一张画布上

计算速度优化

矩阵存储方式选择

order=‘C’

C-type以行为主在内存中排列

order=‘F’

Fortran以列为主在内存中排列

根据使用的级别是行是列,进行选择

view比copy快

能不copy就不copy

ravel是flatten的view方式,快很多

一个个选是copy

:是view

::也是view

加法性能对比

a = a + 1

最慢

是copy,并且要转到下一步np.add再进行运算

np.add(a, 1)

稍快

是copy

a += 1

更快

是view

np.add(a, 1, out=a)

最快

是view

numpy比pandas速度快

pandas是基于numpy的扩展

python文件和数据格式化思维导图,思维导图:Numpy+Pandas相关推荐

  1. Python文件和数据格式化学习笔记

    一.文件的使用 1. 文件的定义: 文件是数据的抽象和集合:文件是存储在辅助存储器上的数据序列:文件是数据存储的一种形式: 2. 文件的展现方式:文本文件和二进制文件(两种) 文本文件和二进制文件只是 ...

  2. Python文件和数据格式化(教程)

    文件是一个存储在副主存储器的数据序列,可包含任何数据内容. 概念上,文件是数据的集合和抽象,类似的,函数是程序的集合和抽象. 用文件形式组织和表达数据更有效也更加灵活. 文件包括两种形式,文本文件和二 ...

  3. 7 Python文件与数据格式化

    一.标准库OS常用命令 需要先自建一个文件夹,并将当前目录修改为该文件夹. import os os.getcwd() #查看当前路径 os.chdir("C:/Users/盛小胖yx/De ...

  4. python文件与数据格式化

    [一]文件概述 1.文件标识 意义:找到计算机中唯一确定的文件 组成:文件路径.文件名主干.文件扩展名 2.文件类型(文本文件 ,二进制文件) 文本文件:专门存储文本字符数据. 二进制文件:不能直接使 ...

  5. Python 文件与数据格式化

    目录 一.文件概述 二.文件的基本操作 三.文件与目录管理 一.文件概述 1.文件的标识:意义:找到计算机中唯一确定的文件. 组成:文件名主干.文件扩展名以及文件路径. 2.类型:计算机中的文件分为文 ...

  6. python——文件和数据格式化

    一: 文件的打开关闭 文件处理的步骤: 打开-操作-关闭 文件的打开 <变量名> = open("<文件名>, <打开模式>") 打开模式 'r ...

  7. python——文件和数据格式化练习题:文件独特行数

    描述 统计附件文件中与其他任何其他行都不同的行的数量,即独特行的数量. 问题分析 这道题是python123课程里面的一道题,我先说一下我的分析过程: 要实现问题找到不同行数,那就要用每一行分别和出它 ...

  8. Day06-Python文件和数据格式化

    简介 此系列主要记录若干年前学习Python的心路历程,本文为第六章(同时也是基础内容的最后一章)Python文件和数据格式化.经过以上学习应该已经掌握Python的基本编程. 文件的使用: 数据的抽 ...

  9. python第七章文件和数据格式化选择题_《计算机二级Python语言程序设计考试》第7章:文件和数据格式化...

    注明:本系列课程专为全国计算机等级考试二级 Python 语言程序设计考试服务 目录 考纲考点 文件的使用: 文件打开.关闭和读写 数据组织的维度:一维数据和二维数据 一维数据的处理:表示.存储和处理 ...

最新文章

  1. 3.request response
  2. 谷歌顶级量子科学家详述他为何从谷歌辞职
  3. 非营利组织Eatbch展示了每一个小的微交易是如何起作用的
  4. 浅谈微博精准推荐——用户行为挖掘与相似用户挖掘
  5. linux——ISCSI 网络磁盘共享
  6. bootstrap源码分析之form、navbar
  7. SpringBoot 对象输出
  8. 机器学习:随机森林RF-OOB袋外错误率
  9. php连接函数config,smarty内置函数config_load用法实例
  10. 使用Maven构建Struts2项目
  11. excanvas让canvas兼容ie7,8
  12. .Net Core之初识及WebApi的简单使用和发布
  13. APP软件下载导航站源码+带后台版/亲测可用
  14. IAR for MSP430安装教程
  15. Xp系统优化 服务相关命令(6)
  16. 用Python制作圣诞树
  17. 主动降噪技术matlab,主动降噪技术(ANC)的前生今世--原理仿真
  18. PHP框架高级编程——应用Symfony、CakePHP和Zend
  19. 尚学堂视频笔记一:java面向对象基础和java基础知识
  20. GDB attach 调试

热门文章

  1. npm设置淘宝镜像源
  2. 苹果Mac笔记本电脑如何开启热点分享网络?
  3. win7隐藏任务栏图标和通知
  4. Tensorflow2训练Fer2013数据集
  5. 如何解决 Android浏览器查看背景图片模糊的问题?
  6. 不看会后悔的100个超有趣冷知识(一)
  7. web页面设计中使用阿里字体(包含图标)
  8. 2022-2028年中国网络安全行业市场专项调研及投资前景规划报告
  9. uva10859放置街灯(树形dp)
  10. 更改Ubuntu软件镜像为清华镜像