数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
五、变换
1. 索引和轴的变换
重新索引:
Series/DataFrame.reindex(index=None, **kwargs)
:index
:一个array-like
对象,给出了新的index
的label
method
:当新的label
的值缺失时,如何处理。参数值可以为:None
:不做任何处理,缺失地方填充NaN
'backfill'/'bfill'
:用下一个可用的值填充该空缺(后向填充)'pad'/'ffill'
:用上一个可用的值填充该空缺(前向填充)'nearest'
:用最近的可用值填充该空缺
copy
:一个布尔值,如果为True
,则返回一个新的Series
对象(即使传入的index
与原来的index
相同)level
:一个整数或者name
,在MultiIndex
的指定级别上匹配简单索引fill_value
:一个标量。指定缺失值的填充数据,默认为NaN
(如果该参数与method
同时出现,则以method
为主)limit
:一个整数,指定前向/后向填充时:如果有连续的k
个NaN
,则只填充其中limit
个。它与method
配合tolerance
:一个整数,用于给出在不匹配时,连续采用前向/后向/最近邻匹配的跨度的最大值。它与method
配合
对于
DataFrame
,多了关键字参数:columns
:一个array-like
对象,给出了新的columns
的label
对于
DataFrame
,如果.reindex()
只传入一个序列,则默认会重索引行label
。如果同时重索引行label
和列label
,则method
插值只能按照行来进行(即 0 轴)将列数据变成行索引(只对
DataFrame
有效,因为Series
没有列索引),其中:col label
变成index name
,列数据变成行label
:xxxxxxxxxx
DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)keys
: 指定了一个或者一列的column label
。这些列将会转换为行index
drop
:一个布尔值。如果为True
,则keys
对应的列会被删除;否则这些列仍然被保留append
:一个布尔值。如果为True
,则原有的行索引将保留(此时一定是个多级索引);否则抛弃原来的行索引。inplace
:一个布尔值。如果为True
,则原地修改并且返回None
verify_integrity
:一个布尔值。如果为True
,则检查新的index
是否有重复值。否则会推迟到检测过程到必须检测的时候。
reset_index
会将层次化的行index
转移到列中,成为新的一列。同时index
变成一个整数型的,从0开始编号:xxxxxxxxxx
DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill='') Series.reset_index(level=None, drop=False, name=None, inplace=False)level
:一个整数、str
、元组或者列表。它指定了将从层次化的index
中移除的level
。如果为None
,则移除所有的level
drop
:一个布尔值。如果为True
,则并不会插入新的列。如果为False
,则插入新的列(由index
,组成,其列名为'index'
)。inplace
:一个布尔值。如果为True
,则原地修改并且返回None
col_level
:如果列索引也是多层次的,则决定插入到列索引的哪个level
。col_fill
:如果列索引也是多层次的,则决定插入之后其他level
的索引如何命名的。默认情况下就是重复该index name
对于
Series
,name
就是插入后,对应的列label
丢弃某条轴上的一个或者多个
label
:Series/DataFrame.drop(labels[, axis, level, inplace, errors])
:labels
:单个label
或者一个label
序列,代表要被丢弃的label
axis
:一个整数,或者轴的名字。默认为 0 轴level
:一个整数或者level
名字,用于MultiIndex
。因为可能在多个level
上都有同名的label
。inplace
:一个布尔值。如果为True
,则原地修改并且返回None
errors
:可以为'ignore'/'raise'
DataFrame
的.T
方法会对DataFrame
进行转置,使得行与列互换(行索引与列索引也互换)交换两个轴:
DataFrame/Series.swapaxes(axis1, axis2, copy=True)
交换多级索引的两个
level
:DataFrame/Series.swaplevel(i=-2, j=-1, axis=0, copy=True)
i/j
为两个level
的整数position
,也可以是name
字符串。
想修改轴
label
有两种方案:可以采用
Index.map(mapper)
方法。其中mapper
是个可调用对象,它对每个label
进行调用然后返回新的label
。该函数返回一个新的Index
对象。然后将其赋值给pandas
对象的.index/.columns
属性。调用
.rename
方法:xxxxxxxxxx
Series.rename(index=None, **kwargs) DataFrame.rename(index=None, columns=None, **kwargs)index/columns
:一个标量、dict-like
、或者一个函数。- 标量:修改了
Series.name
属性。但是对于DataFrame
会抛出异常 dict-like
或者函数:应用于对应轴的label
上
- 标量:修改了
copy
:如果为True
,则拷贝底层数据(此时inplace=False
)inplace
:一个布尔值。如果为True
,则原地修改,此时忽略copy
参数。否则新创建对象。
2. 合并数据
对于
DataFrame
,merge()
方法可以根据一个或者多个键将不同DataFrame
的行连接接起来。它实现的就是数据库的连接操作。xxxxxxxxxx
DataFrame.merge(right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False)right
:另一个DataFrame
对象how
:指定连接类型。可以为:'left'
:左连接。只使用左边DataFrame
的连接键'right'
:右连接。只使用右边DataFrame
的连接键'outer'
:外连接。使用两个DataFrame
的连接键的并集'inner'
:内连接。使用两个DataFrame
的连接键的交集
on
:一个label
或者label list
。它指定用作连接键的列的label
。并且必须在两个DataFrame
中这些label
都存在。如果它为None
,则默认使用两个DataFrame
的列label
的交集。你可以通过left_on/right_on
分别指定两侧DataFrame
对齐的连接键。left_on
:一个label
或者label list
。指定左边DataFrame
用作连接键的列,参考on
right_on
:一个label
或者label list
。指定右边DataFrame
用作连接键的列,参考on
left_index
:一个布尔值。如果为True
,则使用左边的DataFrame
的行的index value
来作为连接键来合并right_index
:一个布尔值。如果为True
,则使用右边的DataFrame
的行的index value
来作为连接键来合并sort
:一个布尔值。如果为True
,则在结果中,对合并采用的连接键进行排序suffixes
:一个二元序列。对于结果中同名的列,它会添加前缀来指示它们来自哪个DataFrame
copy
:一个布尔值。如果为True
,则拷贝基础数据。否则不拷贝数据indicator
:一个字符串或者布尔值。- 如果为
True
,则结果中多了一列称作_merge
,该列给出了每一行来自于那个DataFrame
- 如果为字符串,则结果中多了一列(该列名字由
indicator
字符串给出),该列给出了每一行来自于那个DataFrame
- 如果为
说明:
- 如果合并的序列来自于行的
index value
,则使用left_index
或者right_index
参数。如果是使用了left_index=True
,则必须使用right_index=True
,或者指定right_on
。此时right_on
为第二个DataFrame
的行label
。此时所有对键的操作都针对index label
,而不再是column label
。 - 如果不显示指定连接的键,则默认使用两个
DataFrame
的column label
的交集中的第一个label
。 - 如果根据列来连接,则结果的
index label
是RangeIndex
(连续整数)。如果根据行label value
连接,则结果的index label/column label
来自两个DataFrame
- 对于层次化索引的数据,你必须以列表的形式指明用作合并键的多个列。
函数
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True,
indicator=False)
作用与left.merge(right)
相同。如果所有的连接键来自于某列值,则可以使用
DataFrame.join()
函数。它是.merge()
的简化版。xxxxxxxxxx
DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)other
:一个DataFrame
,或者一个Series
(要求它的name
非空),或者一个DataFrame
序列。Series
的name
作用等同DataFrame
的column label
on
:指定以调用者的那个column
对应的列为键。how
:参考merge
的how
lsuffic/rsuffix
:参考merge
的suffixes
。如果结果中有重名的列,则必须指定它们之一。sort
:一个布尔值。如果为True
,则在结果中,对合并采用的连接键进行排序
如果是
Series
,则连接键为Series
的index value
。此外,DataFrame
默认使用index value
(这与merge()
不同)。pandas.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False, copy=True)
函数:它将多个DataFrame/Series
对象拼接起来。objs
:一个序列,序列元素为Series/DataFrame/Panel
等。你也可以传入一个字典,此时字典的键将作为keys
参数。axis
:指定拼接沿着哪个轴。可以为0/'index'/
,表示沿着 0 轴拼接。可以为1/'columns'
,表示沿着 1轴拼接。join
:可以为'inner'/'outer'
,指定如何处理其他轴上的索引。即:其他轴上的 col 如何拼接
join_axes
:一个Index
对象的列表。你可以指定拼接结果中,其他轴上的索引而不是交集或者并集(join
参数使用时,其他轴的索引是计算得出的)。verify_integrity
:一个布尔值。如果为True
,则检查新连接的轴上是否有重复索引,如果有则抛出异常。keys
:一个序列。它用于区分拼接结果中,这些行/列来分别来自哪里。在必要的时候将建立多级索引,keys
作为最外层的索引。如果objs
是个字典,则使用字典的键作为keys
。它用于建立拼接结果的 index
levels
:一个序列。与keys
配合使用,指定多级索引各级别上的索引。如果为空,则从keys
参数中推断。(推荐为空)names
:一个序列。与keys
配合使用,用于建立多级索引的names
。ignore_index
:一个布尔值。如果为True
,则不使用拼接轴上的index value
,代替以RangeIndex
,取值为0,1,...
copy
:一个布尔值。如果为True
,则拷贝数据。
Series/DataFrame.combine_first()
也是一种合并方式。它用参数对象中的数据给调用者打补丁。xxxxxxxxxx
Series.combine_first(other) DataFrame.combine_first(other)other
:Series
中必须为另一个Series
,DataFrame
中必须为另一个DataFrame
结果的
index/columns
是两个的并集。结果中每个元素值这样产生:- 如果调用者不是
NaN
,则选择调用者的值 - 如果调用者是
NaN
,则选择参数的值(此时无论参数的值是否NaN
)
Series/DataFrame.combine()
也是一种合并。xxxxxxxxxx
Series.combine(other, func, fill_value=nan) DataFrame.combine(other, func, fill_value=None, overwrite=True)other
:Series
中必须为另一个Series
,DataFrame
中必须为另一个DataFrame
func
:一个函数,该函数拥有两个位置参数。第一个参数来自于调用者,第二个参数来自于other
。- 对于
Series
,两个参数都是标量值,对应它们对齐后的元素值。返回值就是结果对应位置处的值。 - 对于
DataFrame
,这两个参数都是Series
,即对应的列。
- 对于
fill_value
:一个标量 。在合并之前先用它来填充NaN
。overwrite
:如果为True
,则原地修改调用者。如果为False
,则返回一个新建的对象。
对于
Series
,结果的index
是两个的并集。结果中每个元素值这样产生:- 将两个
Series
在同一个index
的两个标量值分别传给func
func
的返回值就是结果Series
在该index
处的值
对于
DataFrame
,结果的index/columns
是两个的并集。结果中每列这样产生:- 将两个
DataFrame
在同一个column label
的两列值分别传给func
func
的返回值就是结果DataFrame
在该column label
列的值
3. 索引旋转
DataFrame.stack()
方法将数据的列索引旋转为行索引。注意:它跟转置不同,转置会同时旋转数据。xxxxxxxxxx
DataFrame.stack(level=-1, dropna=True)level
:一个整数、字符串或者整数字符串的列表。如果列索引为多级索引,它指定了将哪个级别的索引旋转为行索引dropna
:一个布尔值。如果为True
,则如果结果中某行全为NaN
,则抛弃该行。
与
DataFrame.stack()
对应的就是DataFrame.unstack()
方法。它将数据的行索引转换为列索引。注意:它跟转置不同,转置会同时旋转数据。xxxxxxxxxx
DataFrame.unstack(level=-1, fill_value=None)level
:一个整数、字符串或者整数字符串的列表。如果行索引为多级索引,它指定了将哪个级别的索引旋转为列索引fill_value
:一个标量。如果结果中有NaN
,则使用fill_value
替换。
旋转时,比如列索引旋转为行索引,则新的行索引是个多级索引,最内层的一级就是原来的列索引。
DataFrame.pivot()
方法重排数据。它是一个快捷方式,它使用set_index
将列数据变成行索引,然后使用unstack
将行索引转为列索引。xxxxxxxxxx
DataFrame.pivot(index=None, columns=None, values=None)index
:一个字符串。指定了一个column name
,用该列数据来set_index
(将该列数据变成行索引,删除了原来的旧的行索引)。如果为None
,则不执行set_index
columns
:一个字符串,指定了哪个列数据作为结果的columns labels
。实际上对 index,clumns 指定的列数据均 set_index,然后仅对 columns 对应的列数据 unstack
values
:一个字符串,指定了哪个列数据作为结果的数据。如果未提供,则剩余的所有列都将作为结果的数据。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论