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

思维导图: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的扩展

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值