数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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.duplicated(*args, **kwargs)
:返回一个布尔Series
,指示调用者中,哪些行是重复的(重复行标记为True
)。keep
:一个字符串或者False
,指示如何标记。它代替了废弃的参数take_last
'first'
:对于重复数据,第一次出现时标记为False
,后面出现时标记为True
'last'
:对于重复数据,最后一次出现时标记为False
,前面出现时标记为True
False
:对于重复数据,所有出现的地方都标记为True
而
Series/DataFrame.drop_duplicates(*args, **kwargs)
:返回重复行被移除之后的Series/DataFrame
。keep
:一个字符串或者False
,指示如何删除。 它代替了废弃的参数take_last
'first'
:对于重复数据,保留第一次出现,后面出现时删除'last'
:对于重复数据,最后一次出现时保留,前面出现时删除False
:对于重复数据,删除所有出现的位置
inplace
:一个布尔值。如果为True
,则原地修改。否则返回新建的对象。
对于
DataFrame
,还有个subset
参数。它是column label
或者其列表,给出了考虑哪些列的重复值。默认考虑所有列。(即一行中哪些字段需要被考虑)
2. apply
你可以使用
numpy
的ufunc
函数操作pandas
对象。有时,你希望将函数应用到由各列或者各行形成的一维数组上,此时
DataFrame
的.apply()
方法即可实现此功能。.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
func
:一个可调用对象,它会应用于每一行或者每一列axis
:指定应用于行还是列。如果为0/'index'
,则沿着0轴计算(应用于每一列);如果为1/'columns'
,则沿着1轴计算(应用于每一行)。broadcast
:一个布尔值,如果为True
,则结果为DataFrame
(不足的部分通过广播来填充)raw
:一个布尔值。如果为False
,则转换每一行/每一列为一个Series
,然后传给func
作为参数。如果True
,则func
接受到的是ndarray
,而不是Series
reduce
:一个布尔值。用于判断当DataFrame
为空时,应该返回一个Series
还是返回一个DataFrame
。如果为True
,则结果为Series
;如果为False
,则结果为DataFrame
。args
:传递给func
的额外的位置参数(第一个位置参数始终为Series/ndarray
)
有时,你希望将函数应用到
DataFrame
中的每个元素,则可以使用.applymap(func)
方法。之所以不叫map
,是因为Series
已经有个.map
方法。Series
的.apply()
方法应用到Series
的每个元素上:.apply(func, convert_dtype=True, args=(), **kwds)
func
:一个可调用对象,它会应用于每个元素convert_dtype
:一个布尔值。如果为True
,则pandas
会自动匹配func
结果的最佳dtype
;如果为False
,则dtype=object
args
:传递给func
的额外的位置参数。kwds
:传递给func
的额外的关键字参数。
返回结果可能是
Series
,也可能是DataFrame
(比如,func
返回一个Series
)Series
的.map(arg,na_action=None)
方法会应用到Series
的每个元素上:arg
:一个函数、字典或者Series
。如果为字典或者Series
,则它是一种映射关系,键/index label
就是自变量,值就是返回值。na_action
:如果为ignore
,则忽略NaN
返回相同
index
的一个Series
3. 缺失数据
pands
对象上的所有描述统计都排除了缺失数据。DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
:根据各label
的值中是否存在缺失数据来对轴label
进行过滤。axis
:指定沿着哪个轴进行过滤。如果为0/'index'
,则沿着0轴;如果为1/'columns'
,则沿着1轴。你也可以同时提供两个轴(以列表或者元组的形式)how
:指定过滤方式。如果为'any'
,则如果该label
对应的数据中只要有任何NaN
,则抛弃该label
;如果为'all'
,则如果该label
对应的数据中必须全部为NaN
才抛弃该label
。thresh
:一个整数,要求该label
必须有thresh
个非NaN
才保留下来。它比how
的优先级较高。subset
:一个label
的array-like
。比如axis=0
,则subset
为轴 1 上的标签,它指定你考虑哪些列的子集上的NaN
inplace
:一个布尔值。如果为True
,则原地修改。否则返回一个新创建的DataFrame
对于
Series
,其签名为:Series.dropna(axis=0, inplace=False, **kwargs)
DataFrame/Series.fillna(value=None, method=None, axis=None, inplace=False, limit=None,
downcast=None, **kwargs)
:用指定值或者插值方法来填充缺失数据。value
:一个标量、字典、Series
或者DataFrame
。注意:value
与method
只能指定其中之一,不能同时提供。- 如果为标量,则它指定了填充
NaN
的数据。 - 如果为
Series/dict
,则它指定了填充每个index
的数据 - 如果为
DataFrame
,则它指定了填充每个DataFrame
单元的数据
- 如果为标量,则它指定了填充
method
:指定填充方式。可以为None
,也可以为:'backfill'/'bfill'
:使用下一个可用的有效值来填充(后向填充)'ffill'/'pad'
:使用前一个可用的有效值来填充(前向填充)
axis
:指定沿着哪个轴进行填充。如果为0/'index'
,则沿着0轴;如果为1/'columns'
,则沿着1轴inplace
:一个布尔值。如果为True
,则原地修改。否则返回一个新创建的DataFrame
limit
:一个整数。如果method
提供了,则当有连续的N
个NaN
时,只有其中的limit
个NaN
会被填充(注意:对于前向填充和后向填充,剩余的空缺的位置不同)downcast
:一个字典,用于类型转换。字典形式为:{label->dtype}
,dtype
可以为字符串,也可以为np.float64
等。
DataFrame/Series.isnull()
:返回一个同样尺寸的布尔类型的对象,来指示每个值是否是null
DataFrame/Series.notnull()
:返回一个同样尺寸的布尔类型的对象,来指示每个值是否是not null
fillna()
方法可以看作是值替换的一种特殊情况。更通用的是值替换replace()
方法。xxxxxxxxxx
Series/DataFrame.replace(to_replace=None, value=None, inplace=False, limit=None, regex=False, method='pad', axis=None)to_replace
:一个字符串、正则表达式、列表、字典、Series
、数值、None
。指示了需要被替换的那些值字符串:则只有严格等于该字符串的那些值才被替换
正则表达式:只有匹配该正则表达式的那些值才被替换(
regex=True
)列表:
- 如果
to_place
和value
都是列表,则它们必须长度严格相等 - 如果
regex=True
,则列表中所有字符串都是正则表达式。
- 如果
字典:字典的键对应了被替换的值,字典的值给出了替换值。如果是嵌套字典,则最外层的键给出了
column
名None
:此时regex
必须是个字符串,该字符串可以表示正则表达式、列表、字典、ndarray
等。如果value
也是None
,则to_replace
必须是个嵌套字典。
value
:一个字符串、正则表达式、列表、字典、Series
、数值、None
。给出了替换值。如果是个字典,则键指出了将填充哪些列(不在其中的那些列将不被填充)inplace
:一个布尔值。如果为True
,则原地修改。否则创建新对象。limit
:一个整数,指定了连续填充的最大跨度。regex
:一个布尔值,或者与to_replace
类型相同。- 如果为
True
,则to_replace
必须是个字符串。 - 如果是个字符串,则
to_replace
必须为None
,因为它会被视作过滤器
- 如果为
method
:指定填充类型。可以为'pad'/'ffill'/'bfill'
。当to_replace
是个列表时该参数有效。
interpolate
是通过前后数据插值来填充NaN
。xxxxxxxxxx
Series/DataFrame.interpolate(method='linear', axis=0, limit=None, inplace=False, limit_direction='forward', downcast=None, **kwargs)method
:一个字符串,指定插值的方法。'linear'
:线性插值。只有它支持MultiIndex
'index'
/'values'
:使用索引标签的整数下标来辅助插值'nearest', 'zero', 'slinear', 'quadratic', 'cubic',
'barycentric', 'polynomial'
使用scipy.interpolate.interp1d
。对于'polynomial'/'spline'
,你需要传入一个order
(一个整数)'krogh', 'piecewise_polynomial', 'spline', 'pchip','akima'
也使用了scipy
的插值算法。它们使用索引标签的整数下标来辅助插值。'time'
: interpolation works on daily and higher resolution data to interpolate given length of interval
axis
:指定插值的轴。如果为0/'index'
则沿着0 轴;如果为1/'columns'
则沿着 1 轴limit
:一个整数,指定插值时,如果有K
个连续的NaN
,则只插值其中的limit
个limit_direction
:一个字符串。当设定了limit
时,指定处理前面limit
个NaN
,还是后面limit
个NaN
。可以为'forward'/'backward'/'both'
inplace
:一个布尔值。如果为True
,则原地修改。否则创建新对象。downcast
:指定是否自动向下执行类型转换、其他参数是传递给
scipy
的插值函数的。
4. 离散化
连续数据常常会被离散化或者拆分成面元
bin
。可以通过pandas.cut()
函数来实现:xxxxxxxxxx
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)x
:一维的数据。bins
:一个整数或者一个序列。- 整数:它指定了划分区间的数量。每个区间是等长的,且最左侧的区间的左侧比
x
最小值小0.1%
;最右侧的区间的右侧比x
最大值大0.1%
。 - 一个序列:它给出了
bins
的每个划分点。
- 整数:它指定了划分区间的数量。每个区间是等长的,且最左侧的区间的左侧比
right
:一个布尔值。如果为True
,则区间是左开右闭;否则区间是左闭右开的区间。labels
:一个array
或者None
。如果为一个array
,则它指定了结果bins
的label
(要求长度与bins
数量相同)。如果为None
,则使用区间来表示。retbins
:一个布尔值。如果为True
,则返回bins
precision
:一个整数,给出存储和显示bin label
的精度include_lowest
:一个布尔值。如果为True
,则最左侧bin
的左侧是闭区间
返回的是一个
Categorical
对象或者Series
对象。该函数类似于numpy.histogram()
函数。另外一个划分的函数是:
xxxxxxxxxx
pandas.qcut(x, q, labels=None, retbins=False, precision=3)q
:一个整数或者序列。- 整数:它指定了划分区间的数量。
- 一个序列:它给出了百分比划分点。比如
[0,0.25,0.5,0.75,0.1]
。0.25
代表25%
划分点。如果数据不在任何区间内,则标记为NaN
。
其他参数与
cut
相同。(qcut
没有bins
参数)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论