0%

模块的引入

1
import module1[, module2[,... moduleN]]

调用模块中的函数,格式:模块名.函数名

1
module1.fun()

from…import

导入module模块中的fun1,可以导入函数,也可以是一个类。

1
2
3
from module import fun1

fun1()
1
2
3
from module import clz

clz.fun1()

导入module模块中所有函数,这种写法不推荐使用。

1
2
3
from module import *

fun1()

子模块

当把一个模块放到一个文件夹下面时

1
import module1.module2

module1就是这个文件夹的名字,module2为子模块。

删除列

1
2
df.drop([col1, col2], axis=1)
df.drop(columns=[col1, col2])

删除行

1
2
df.drop([index1, index2], axis=0)
df.drop(index=[index1, index2])

查找唯一

1
df[col].unique()

按值筛选

1
df[df[col].isin(['银行', '保险'])]

分类

1
2
bins = [0, 10, 20, 30]
pd.cut(df[col], bins, labels=[l1, l2, ...])

分为5个桶

1
pd.qcut(df[col], 5)

长宽转换

1
df.stack()

原来的Index变成MultiIndex: (index1, col1), (index1, col2), (index1, col1), (index2, col2)

宽表转长表

平安银行 yoy_2019 yoy_2020 yoy_2021

1
df.melt(id_vars=[col1], var_name=['year'], value_name='yoy')

长表转宽表

1
df.pivot_table(index=[col1], columns=['year'], values=['yoy'])

apply()和applymap()

apply按列、行应用函数

分位数

1
pd.quantile([0.1, 0.2])

相关性

1
df[col1].corr(df[col2])

date_range

1
pd.date_range('2020-01-31', '2021-12-31', freq='M')

就会生成每个月最后一天的日期序列。

range 函数用于生成一个整数(integer)序列。

range(start, end, step),返回类型为range,左闭右开区间。

1
2
3
4
5
6
7
8
for i in range(1, 10, 2):
print(i)

1
3
5
7
9

arange 是 numpy 包下面的函数,生成一个 float64 的 Array。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np
for i in np.arange(1, 2, 0.1):
print(i)

1.0
1.1
1.2000000000000002
1.3000000000000003
1.4000000000000004
1.5000000000000004
1.6000000000000005
1.7000000000000006
1.8000000000000007
1.9000000000000008

这里涉及到一个问题就是 float 比较大小的问题,可以使用 math.isclose() 函数。

1
if math.isclose(1.2000000000000002, 1.2, rel_tol=1e-5)