Pandas Task01 预备知识

本篇笔记思维导图

一、python基础

语法糖一、列表推导

L=[] #[]是list格式

def my_func(x):

    return 2*x    #定义函数

for i in range(5):

    L.append(my_func(i))

L

[my_func(i) for i in range(5)] #语法糖——列表推导式,也可以直接写函数,并支持双层嵌套

[m*n for m in range(2) for n in range(3)] #range(8)整数列表,包含从0到7; [m+'_'+n for m in ['a', 'b'] for n in ['c', 'd']]

语法糖二、条件复制

value = a if condition else b 

value = 'cat' if 2>1 else 'dog'

value

Out[2]: 'cat'

等价如下:

a, b = 'cat', 'dog'

condition = 2 > 1 # 此时为True

if condition:

    value = a

else:

    value = b

value

L = [1, 2, 3, 4, 5, 6, 7]

[i if i <= 5 else 5 for i in L]

语法糖三、匿名函数

lambda arg1,arg2,arg3… :<表达式>

arg1/arg2/arg3为函数的参数(函数输入),表达式相当于函数体,运算结果是表达式的运算结果。

例:

my_func = lambda x: 2*x

my_func(2)

[(lambda x: 2*x)(i) for i in range(5)]

         #固定语法(lambda x: x + 1)(2)

 a=[1,2,3]

 print(a)

b=list('123')

b

#以上两种方法都可以表示列表;元组用(),列表用[],元组的元素不能修改

zip对象与enumerate方法

list('123')

L1, L2, L3 = list('abc'), list('def'), list('hij')

for i, j, k in zip(L1, L2, L3):

    print(i,j,k)

         #遍历zip当中的所有,并且很奇怪的是为什么打印出来是竖着格式

for index,value in enumerate(L1):

    print(index,value)

         #enumerate 是一种特殊的打包,它可以在迭代时绑定迭代元素的遍历序号

dict(zip(L1,L2))

         #对两个列表建立字典映射

zipped=list(zip(L1,L2,L3))

list(zip(*zipped))

         #*zipped是解压函数

二、numpy基础

讨论一些特殊数组的生成方式

arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])

  ...: arr2d

  ...:

Out[9]:

array([[1, 2, 3],

       [4, 5, 6],

       [7, 8, 9]])

等差数列

np.linspace(1,5,11) # 起始、终止(包含)、样本个数

np.arange(1,5,2) # 起始、终止(不包含)、步长

特殊矩阵

np.zeros((2,3))#返回给定形状和类型的新数组,用零填充

np.eye(3)  # 3*3的单位矩阵

np.eye(3, k=1) # 偏移主对角线1个单位的伪单位矩阵

np.full((2,3), 10) # 元组传入大小,10表示填充数值

np.full((2,3), [1,2,3]) # 通过传入列表填充每列的值

随机矩阵:np.random

最常用的随机生成函数为 rand, randn, randint, choice ,它们分别表示0-1均匀分布的随机数组标准正态的随机数组随机整数组随机列表抽样

均匀分布

np.random.rand(3) # 生成服从0-1均匀分布的三个随机数

np.random.rand(3, 3) # 注意这里传入的不是元组,每个维度大小分开输入

a, b = 5, 15

(b - a) * np.random.rand(3) + a #对于服从区间 a 到 b 上的均匀分布

标准正态分布

np.random.randn(3)#标准正态分布

sigma, mu = 2.5, 3

mu + np.random.randn(3) * sigma #对于服从特定方差和均值的一元正态分布

随机整数

low, high, size = 5, 15, (2,2) # 生成5到14的随机整数

np.random.randint(low, high, size)

随即列表抽样

choice 可以从给定的列表中,以一定概率和方式抽取结果,当不指定概率时为均匀采样,默认抽取方式为有放回抽样:

my_list = ['a', 'b', 'c', 'd']

np.random.choice(my_list, size=2, replace=False, p=[0.1, 0.7, 0.1 ,0.1])#size代表随机选择个数,replace代表抽样之后是否放回,p没有指定的时候相当于是一致的分布

区间上均匀分布

三、np数组的变形与合并

一、转置

np.zeros((2,3)).T

二、合并操作:

r_ 和 c_ 分别表示上下合并和左右合并

例:

np.r_[np.zeros((2,3)),np.zeros((2,3))]

np.c_[np.zeros((2,3)),np.zeros((2,3))]

三、维度变换:reshape

在使用时有两种模式,分别为C 模式和 F 模式,分别以逐行和逐列的顺序进行填充读取。

target = np.arange(8).reshape(2,4)

target.reshape((4,2), order='C') # 按照行读取和填充

target.reshape((4,2), order='F') # 按照列读取和填充

target.reshape(-1)  #把数组转为一维

四、np数组的切片与索引

1、基本切片操作

x=np.arange(10)

x[5:8]

output:array([5, 6, 7])

2、切片赋值

>>>x[5:8]=12 

>>>x

array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])

>>>x[:]=-1

>>>x

x([-1, -1, -1, -1, -1, -1, -1, -1, -1, -1])

3、高阶数组索引(指定是数组的第几行第几列)

>>> arr2d=np.array([[1,2,3],[4,5,6],[7,8,9]])

>>> arr2d[2] array([7, 8, 9]) 

>>> arr2d[0][2] 

3

4、布尔型索引

五、常用函数

where

In [80]: a = np.array([-1,1,-1,0])

In [81]: np.where(a>0, a, 5) # 对应位置为True时填充a对应元素,否则填充5

nonzero、argmax、argmin

这三个函数返回的都是索引, nonzero 返回非零数的索引, argmax, argmin 分别返回最大和最小数的索引:

In [82]: a = np.array([-2,-5,0,1,3,-1])

In [83]: np.nonzero(a)Out[83]: (array([0, 1, 3, 4, 5], dtype=int64),)

In [84]: a.argmax()Out[84]: 4

In [85]: a.argmin()Out[85]: 1

any、all

any 指当序列至少 存在一个 True 或非零元素时返回 True ,否则返回 False

all 指当序列元素 全为 True 或非零元素时返回 True ,否则返回 False

In [86]: a = np.array([0,1])

In [87]: a.any()

Out[87]: True

In [88]: a.all()

Out[88]: False

cumprod、cumsum、diff

cumprod, cumsum 分别表示累乘和累加函数,返回同长度的数组, diff 表示和前一个元素做差,即时间序列当中的一阶差分

In [89]: a = np.array([1,2,3])

In [90]: a.cumprod()

Out[90]: array([1, 2, 6], dtype=int32)

In [91]: a.cumsum()

Out[91]: array([1, 3, 6], dtype=int32)

In [92]: np.diff(a)

Out[92]: array([1, 1])

统计函数:min、max、mean, median, std, var, sum, quantile 

略过缺失值用nan类型函数

In [93]: target = np.arange(5)

In [94]: target

Out[94]: array([0, 1, 2, 3, 4])

In [95]: target.max()

Out[95]: 4

In [96]: np.quantile(target, 0.5) # 0.5分位数

Out[96]: 2.0

In [100]: np.nanmax(target)

Out[100]: 2.0

协方差和相关系数cov、corrcoef

In [102]: target1 = np.array([1,3,5,9])

In [103]: target2 = np.array([1,5,3,-9])

In [104]: np.cov(target1, target2)

Out[104]: array([[ 11.66666667, -16.66666667],       

                 [-16.66666667,  38.66666667]])

In [105]: np.corrcoef(target1, target2)

Out[105]: array([[ 1.        , -0.78470603],

                 [-0.78470603,  1.        ]])

六、向量与矩阵的计算

a、向量内积:dot

In [122]: a = np.array([1,2,3])

In [123]: b = np.array([1,3,5])

In [124]: a.dot(b)

Out[124]: 22

b、矩阵乘法:@

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容