数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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. 数值运算
当进行数值运算时,
pandas
会按照标签对齐元素:运算符会对标签相同的两个元素进行计算。对于DataFrame
,对齐会同时发生在行和列上。- 当某一方的标签不存在时,默认以
NaN
填充。缺失值会在运算过程中传播。
由于
NaN
是浮点数中的一个特殊值,因此结果的元素类型被转换为float64
- 结果的索引是双方索引的并集。
- 当某一方的标签不存在时,默认以
除了支持加减乘除等运算符之外,
pandas
还提供了对应的函数:add/sub/mul/div/mod(other, axis='columns', level=None, fill_value=None)
:other
:一个DataFrame/Series
或者一个array-like
,或者一个标量值axis
:指定操作的轴。可以为0/1/'index'/'columns'
。其意义是:操作发生在哪个轴上。fill_value
:指定替换掉NaN
的值。可以为None
(不替换),或者一个浮点值。注意:如果发现两个NaN
相加,则结果仍然还是NaN
,而并不会是两个fill_value
相加。level
:一个整数或者label
,用于多级索引的运算。
全部运算操作函数为:
xxxxxxxxxx
add,sub,mul,div,truediv,floordiv,mod,pow,radd,rsub,rmul,rdiv,rtruediv, rfloordiv,rmod,rpow # 这些的参数为 other,axis,level,fill_value lt,gt,le,ge,ne,eq# 这些的参数为 ohter,axis,level对于
DataFrame
和Series
的运算,默认会用DataFrame
的每一行与Series
运算。如果你希望使用DataFrame
的每一列与Series
运算,则必须使用二元操作函数,并且指定axis=0
(表示操作匹配的轴)。
2. 排序
.sort_index()
方法的作用是根据label
排序(而不是对存放的数据排序)。xxxxxxxxxx
DataFrame/Series.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True)axis
:指定沿着那个轴排序。如果为0/'index'
,则对沿着0轴,对行label
排序;如果为1/'columns'
,则沿着 1轴对列label
排序。level
:一个整数、label
、整数列表、label list
或者None
。对于多级索引,它指定在哪一级上排序。ascending
:一个布尔值,如果为True
,则升序排序;如果是False
,则降序排序。inplace
:一个布尔值,如果为True
,则原地修改。如果为False
,则返回排好序的新对象kind
:一个字符串,指定排序算法。可以为'quicksort'/'mergesort'/'heapsort'
。注意只有归并排序是稳定排序的na_position
:一个字符串,值为'first'/'last'
,指示:将NaN
排在最开始还是最末尾。sort_remaining
:一个布尔值。如果为True
,则当多级索引排序中,指定level
的索引排序完毕后,对剩下level
的索引也排序。
.sort_values()
方法的作用是根据元素值进行排序。xxxxxxxxxx
DataFrame/Series.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last') Series.sort_values(axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')by
:一个字符串或者字符串的列表,指定希望对那些label
对应的列或者行的元素进行排序。对于DataFrame
,必须指定该参数。而Series
不能指定该参数。如果是一个字符串列表,则排在前面的
label
的优先级较高。它指定了用于比较的字段
axis
:指定沿着那个轴排序。如果为0/'index'
,则沿着0轴排序(此时by
指定列label
,根据该列的各元素大小,重排列各行);如果为1/'columns'
,则沿着 1轴排序(此时by
指定行label
,根据该行的各元素大小,重排列各列)。ascending
:一个布尔值,如果为True
,则升序排序;如果是False
,则降序排序。inplace
:一个布尔值,如果为True
,则原地修改。如果为False
,则返回排好序的新对象kind
:一个字符串,指定排序算法。可以为'quicksort'/'mergesort'/'heapsort'
。注意只有归并排序是稳定排序的na_position
:一个字符串,值为'first'/'last'
,指示:将NaN
排在最开始还是最末尾。
DataFrame/Series.sortlevel(level=0, axis=0, ascending=True,
inplace=False, sort_remaining=True)
:根据单个level
中的label
对数据进行排列(稳定的)axis
:指定沿着那个轴排序。如果为0/'index'
,则沿着0轴排序 ;如果为1/'columns'
,则沿着 1轴排序level
:一个整数,指定多级索引的level
ascending
:一个布尔值,如果为True
,则升序排序;如果是False
,则降序排序。inplace
:一个布尔值,如果为True
,则原地修改。如果为False
,则返回排好序的新对象sort_remaining
:一个布尔值。如果为True
,则当多级索引排序中,指定level
的索引排序完毕后,对剩下level
的索引也排序。
.rank()
方法的作用是在指定轴上计算各数值的排,其中相同数值的排名是相同的。xxxxxxxxxx
DataFrame/Series.rank(axis=0, method='average', numeric_only=None, na_option='keep', ascending=True, pct=False)axis
:指定沿着那个轴排名。如果为0/'index'
,则沿着行排名(对列排名);如果为1/'columns'
,则沿着列排名(对行排名)。method
:一个字符串,指定相同的一组数值的排名。假设数值v
一共有N
个。现在轮到对v
排序,设当前可用的排名为k
。
$ \frac{\sum_{i=0}^{N-1}(K+i)}{N}=K+\frac{N-1}{2} $'average'
:为各个等值平均分配排名,这N
个数的排名都是
'min'
:使用可用的最小的排名,这N
个数的排名都是k
'max'
:使用可用的最大的排名,这N
各数的排名都是k+N-1
'first
:根据元素数据中出现的顺序依次分配排名,即按照它们出现的顺序,其排名分别为k,k+1,...k+N-1
'dense
:类似于'min'
,但是排名并不会跳跃。即比v
大的下一个数值排名为k+1
,而不是k+N
numeric_only
:一个布尔值。如果为True
,则只对float/int/bool
数据排名。仅对DataFrame
有效na_option
:一个字符串,指定对NaN
的处理。可以为:'keep'
:保留NaN
在原位置'top'
:如果升序,则NaN
安排最大的排名'bottom'
:如果升序,则NaN
安排最小的排名
ascending
:一个布尔值,如果为True
,则升序排名;如果是False
,则降序排名。pct
:一个布尔值。如果为True
,则计算数据的百分位数,而不是排名。
3. 统计
Series
和DataFrame
对象都支持Numpy
的数组接口,因此可以直接使用Numpy
提供的ufunc
函数对它们进行运算。这些函数通常都有三个常用参数:axis
:指定运算沿着哪个轴进行level
:如果轴是多级索引MultiIndex
,则根据level
分组计算skipna
:运算是否自动跳过NaN
下面的方法使用如下的两个
Series
和DataFrame
:数值运算类方法:(下面的
DataFrame
方法对于Series
也适用)DataFrame.abs()
:计算绝对值(只对数值元素进行计算)DataFrame.all([axis, bool_only, skipna, level])
:返回指定轴上:是否所有元素都为True
或者非零。bool_only
为True
则仅考虑布尔型的数据。DataFrame.any([axis, bool_only, skipna, level])
:返回指定轴上:是否存在某个元素都为True
或者非零。bool_only
为True
则仅考虑布尔型的数据。DataFrame.clip([lower, upper, axis])
:将指定轴上的数据裁剪到[lower,upper]
这个闭区间之内。超过upper
的值裁剪成upper
;小于lower
的值裁剪成lower
。DataFrame.clip_lower(threshold[, axis])
:返回一份拷贝,该拷贝是在指定轴上:向下裁剪到threshold
DataFrame.clip_upper(threshold[, axis])
:返回一份拷贝,该拷贝是在指定轴上:向上裁剪到threshold
DataFrame.prod([axis, skipna, level, ...])
:计算指定轴上的乘积DataFrame.sum([axis, skipna, level, ...])
:沿着指定轴,计算样本的和DataFrame.cumsum([axis, skipna])
:计算沿着axis
轴的累积和。DataFrame.cumprod([axis, skipna])
:计算沿着axis
轴的累积乘积。DataFrame.count([axis, level, numeric_only])
:计算沿着axis
轴,level
级索引的非NaN
值的数量。如果numeric_only
为True
,则只考虑数值和布尔类型。对于
Series
,只有level
一个参数。DataFrame.round([decimals])
:对元素指定小数点位数。decimals
可以为一个整数(所有的元素都按照该小数点位数)、一个字典(根据列label
指定)
最大最小:(下面的
DataFrame
方法对于Series
也适用)DataFrame.max([axis, skipna, level, ...])
: 沿着指定轴,计算最大值DataFrame.min([axis, skipna, level, ...])
: 沿着指定轴,计算最小值Series.argmax([axis, skipna, ...])
: 计算最大值的索引位置(一个整数值)pandas 0.20 以后,它返回的不再是索引位置,而是索引 label,等价于 idxmax
Series.argmin([axis, skipna, ...])
: 计算最小值的索引位置(一个整数值)pandas 0.20 以后,它返回的不再是索引位置,而是索引 label,等价于 idxmin
Series.idxmax([axis, skipna, ...])
: 计算最大值的索引label
Series.idxmin([axis, skipna, ...])
: 计算最小值的索引label
DataFrame.cummax([axis, skipna])
:计算沿着axis
轴的累积最大值。DataFrame.cummin([axis, skipna])
:计算沿着axis
轴的累积最最小值。DataFrame.quantile([q, axis, numeric_only, ...])
:计算指定轴上样本的百分位数。q
为一个浮点数或者一个array-like
。每个元素都是0~1
之间。如 0.5代表 50%分位DataFrame.rank([axis, method, numeric_only, ...])
:计算指定轴上的排名。DataFrame.pct_change([periods, fill_method, ...])
:计算百分比变化。periods
为相隔多少个周期。它计算的是:(s[i+periods]-s[i])/s[i]
,注意结果并没有乘以 100。Series.nlargest( *args,**kwargs)
:计算最大的N
个数。参数为:n
:最大的多少个数keep
:遇到重复值时怎么处理。可以为:'first'/'last'
。
Series.nsmallest( *args,**kwargs)
:计算最小的N
个数。参数同上。
统计类方法:(下面的
DataFrame
方法对于Series
也适用)DataFrame.mean([axis, skipna, level, ...])
:沿着指定轴,计算平均值DataFrame.median([axis, skipna, level, ...])
:沿着指定轴,计算位于中间大小的数DataFrame.var([axis, skipna, level, ddof, ...])
:沿着指定轴,计算样本的方差DataFrame.std([axis, skipna, level, ddof, ...])
:沿着指定轴,计算样本的标准差DataFrame.mad([axis, skipna, level])
:沿着指定轴,根据平均值计算平均绝对离差DataFrame.diff([periods, axis])
:沿着指定轴的一阶差分。periods
为间隔。DataFrame.skew([axis, skipna, level, ...])
:沿着指定轴计算样本的偏度(二阶矩)DataFrame.kurt([axis, skipna, level, ...])
:沿着指定轴,计算样本的峰度(四阶矩)- 对随机变量 $ MathJax-Element-16 $ , $ MathJax-Element-11 $ 若存在,则称它为 $ MathJax-Element-16 $ 的 $ MathJax-Element-17 $ 阶原点矩,简称 $ MathJax-Element-17 $ 阶矩。若 $ MathJax-Element-15 $ 存在,则称它为 $ MathJax-Element-16 $ 的 $ MathJax-Element-17 $ 阶中心矩。
DataFrame.describe([percentiles, include, ...])
:获取顺序统计量以及其他的统计结果。percentiles
:一个array-like
。每个元素都是0~1
之间。如 0.5代表 50%分位include,exclude
:指定包含/不包含哪些列(通过dtype
来指定)。可以为None/'all'
,或者一个dtype
列表
DataFrame.corr([method, min_periods])
:计算任意两个列之间的非NAN
的、按照索引对齐的值的相关系数。method
为相关系数的类型,可以为:'pearson'
:标准的相关系数'kendall'
:Kendall Tau
相关系数'spearman'
:Spearman rank
相关系数
而
min_periods
:一个整数。它指定为了生成一个有效的相关系数,每一对列数据的最短长度。DataFrame.corrwith(other[, axis, drop])
:计算两个DataFrame
的行-行、列-列的相关系数。axis
:如果为0/'index'
则沿着0轴,则计算列-列之间的相关系数。如果为1/'columns'
,则沿着1轴,计算行-行之间的相关系数drop
:一个布尔值。如果为True
,则如果某行/列都是NaN
,则抛弃该行/列。如果为False
,则返回全部。
DataFrame.cov([min_periods])
:计算任意两列之间的协方差。min_periods
指定为了生成一个有效的协方差,每一对列数据的最短长度。- 对于
Series
,其调用为:Series.cov(other,[min_periods])
- 对于
对于
Series
:唯一值、值计数、成员资格:Series.unique()
:返回Series
中唯一值组成的一维ndarray
Series.value_counts(normalize=False, sort=True, ascending=False,
bins=None, dropna=True)
:对Series
中的数进行计数。如果normalize
为True
,则返回频率而不是频数。sort
为True
则结果根据出现的值排序,排序方式由ascending
指定。bins
是一个整数或者None
。如果它为整数,则使用半开半闭区间来统计,它给出了该区间的数量。
Series.isin(values)
:返回一个布尔数组,给出Series
中各值是否位于values
中。DataFrame
也有此方法。
对于多级索引,可以通过
level
参数来指定在某个轴上的操作索引级别。如果level=None
,则不考虑索引的多级。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论