数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
一、基本数据结构
Pandas
的两个主要数据结构:Series
和DateFrame
1. Series
创建:
class pandas.Series(data=None, index=None, dtype=None, name=None, copy=False,fastpath=False)
:参数:
data
:它可以是一个字典、array-like
、标量。表示Series
包含的数据,如果是序列/数组,则它必须是一维的- 如果是字典,则字典的键指定了
label
。如果你同时使用了index
,则以index
为准。 - 如果是标量,则结果为:该标量扩充为
index
长度相同的列表。 index
:一个array-like
或者一个Index
对象。它指定了label
。其值必须唯一而且hashable
,且长度与data
一致。如果data
是一个字典,则index
将会使用该字典的key
(此时index
不起作用)。如果未提供,则使用np.arange(n)
。name
:一个字符串,为Series
的名字。dtype
:指定数据类型。如果为None
,则数据类型被自动推断copy
:一个布尔值。如果为True
,则拷贝输入数据data
还可以通过类方法创建
Series
:Series.from_array(arr, index=None, name=None, dtype=None,
copy=False, fastpath=False)
:其中arr
可以是一个字典、array-like
、标量。其他参数见1.我们可以将
Series
转换成其他数据类型:.to_dict()
:转换成字典,格式为{label->value}
.to_frame([name])
:转换成DataFrame
。name
为Index
的名字.tolist()
:转换成列表
可以将
Series
转换成字符串:.to_string(buf=None, na_rep='NaN', float_format=None, header=True, index=True, length=False, dtype=False, name=False, max_rows=None)
buf
:一个StringIO-like
对象,是写入的buffer
na_rep
:一个字符串,代表数值NaN
float_format
:浮点数的格式化函数。应用于浮点列header
:一个布尔值。如果为True
,则添加头部信息(index name
)index
:一个布尔值。如果为True
,则添加index labels
length
:一个布尔值。如果为True
,则添加Series
的长度信息dtype
:一个布尔值。如果为True
,则添加dtype
信息name
:一个布尔值。如果为True
,则添加Series name
max_rows
:一个整数值,给出了最大转换的行数。如果为None
,则转换全部。
返回转换后的字符串。
2. Index
class pandas.Index(data=None, dtype=None, copy=False, name=None,
fastpath=False, tupleize_cols=True)
:创建Index
对象。参数:
data
:一个array-like
,必须是一维的name
:一个字符串,为Index
的名字。dtype
:指定数据类型。如果为None
,则默认为object
copy
:一个布尔值。如果为True
,则拷贝输入数据data
tupleize_cols
:一个布尔值,如果可能则尽量创建MultiIndex
对象
Index
对象负责管理轴label
和其他元数据(比如轴name
)。构建Series/DataFrame
时,传给index/columns
关键字的任何数组或者序列都将被转化成一个Index
。Index
对象是immutable
,因此用户无法对其进行修改。这样才能够使得Index
对象在多个数据结构之间安全共享存在多种索引类型。
Index
:最泛化的Index
对象,将轴label
表示为一个Python
对象组成的Numpy
数组Int64Index
:针对整数的特殊Index
MultiIndex
:层次化索引对象,表示单个轴上的多层索引。可以看做由元组组成的数组DatatimeIndex
:存储纳秒级时间戳,用numpy
的datatime64
类型表示PeriodIndex
:针对Period
数据(时间间隔)的特殊Index
Index
的功能类似一个固定大小的集合。其类似于集合的方法有(因为Index
不可变,因此返回的都是新的Index
对象):.copy([name,deep,dtype])
:返回一份Index
的拷贝。.append(other)
:连接另一个Index
对象,产生一个新的Index
对象。注意重复的label
并不会合并.difference(other)
:计算差集,返回一个Index
对象.intersection(other)
:计算交集,返回一个Index
对象.union(other)
:计算并集,返回一个新的Index
对象.isin(values[, level])
:计算Index
中各label
是否在values
中.delete(loc)
:删除下标loc
处的元素,得到新的Index
.drop(labels[, errors])
:删除传入的labels
,得到新的Index
.insert(loc, item)
:在指定下标位置插入值,得到新的Index
.unique()
:返回Index
中唯一值的数组,得到新的Index
我们可以将
Index
转换成其他数据类型:.astype(dtype,[,copy])
:转换成另一个数据类型的Index
,其label
的dtype
被转换成指定的值.tolist()
:转换成列表.to_series(**kwargs)
:转换成Series
,Series
的数据和label
相同
Index
提供的选取方法有:.get_indexer(target[, method, limit, ...])
:获取target
(一个Index
对象)对应的下标列表。target
:一个Index
对象。我们要考察的就是Index
中的每个label
在self
中的下标序列。method
:指定label
的匹配方法。可以为None
,表示严格匹配(如果不存在则下标为 -1)。如果为'pad'/'ffill'
,则:若未找到匹配的,则使用前向匹配。如果为'backfill'/'bfill'
,则:若未找到匹配的,则使用后向匹配。如果为'nearest'
,则:若未找到匹配的,则使用最近邻匹配。匹配时,假设你的
Index
的label
是有序排列的(要么是升序,要么是降序)limit
:一个整数,指定前向/后向/最近填充时:如果有连续的k
个NaN
,则只填充其中limit
个。tolerance
:一个整数,用于给出在不匹配时,连续采用前向/后向/最近邻匹配的跨度的最大值。
.get_level_values(level)
:返回指定level
的Index
,用于MultiIndex
。.get_loc(key[, method, tolerance])
:返回指定label
处的下标,由key
指定。其中method
和tolerance
参数见上述。如果method=None
,且key
指定的label
找不到,则抛出异常。.get_value(series, key)
:寻找Series
指定label
处的值。若key
指定的label
找不到,则抛出异常。.slice_locs([start, end, step, kind])
:计算给定start label
和end label
之间的下标序列,返回代表该下标序列的切片或者数组。其中不包括end
。
3. MultiIndex
MultiIndex
代表的是多级索引对象。它继承自Index
,其中的多级label
采用元组对象来表示。在MultiIndex
内部,并不直接保存元组对象,而是使用多个Index
对象保存索引中每级的label
。class pandas.MultiIndex(levels=None, labels=None, sortorder=None, names=None,
copy=False, verify_integrity=True, _set_identity=True, name=None, **kwargs)
参数:
levels
:一个数组的列表,给出了每一级的level
。labels
:一个数组的列表,给出了每一级level
的下标。第i
级label
是这样产生的:- 首先获取
labels[i]
,它是一个下标序列,代表第 $ MathJax-Element-8 $ 级。 - 假设第
k
位置为整数 3,在第 $ MathJax-Element-8 $ 级第 $ MathJax-Element-17 $ 位的label
就是levels[i][3]
。
- 首先获取
sortorder
:一个整数,给出了已经排序好了的level
级别。names
:一个字符串序列,给出了每个Index
的name
。其中每个级别对应一个Index
copy
:一个布尔值。如果为True
,则拷贝基础数据verify_integrity
:一个布尔值。如果为True
,则检测各级别的label/level
都是连续的且有效的name
:指定了本MultiIndex
的名字
你也可以通过下面的类方法来创建
MultiIndex
:MultiIndex.from_arrays(arrays[, sortorder, ...])
:将二维序列转换为MultiIndex
。其中arrays
为array-like
的序列,每个array-like
按顺序的给出了一列label
(一个级别)MultiIndex.from_tuples(tuples[, sortorder, ...])
:将元组序列转换为MultiIndex
。其中tuples
为tuple-like
的序列,每个array-like
按顺序的给出了一行label
对(不同级别的一对)MultiIndex.from_product(iterables[, ...])
:根据多个可迭代对象生成一个MultiIndex
,其中使用笛卡尔积的算法。其中iterables
为可迭代对象的序列
你也可以通过传递一个元组列表给
Index()
,并且将tupleize_cols
设置为True
来创建MultiIndex
4. DataFrame
DataFrame
是一个表格型的数据结构,它含有一组有序的列,每一列都可以是不同的值类型(数值、日期、object
类型)。其中object
类型可以保存任何python
对象,比如字符串。同一列必须是相同的值类型。DataFrame
既有行索引,又有列索引。他可以被看作为Series
组成的字典(共用同一个行索引)DataFrame
中面向行和面向列的操作基本上是平衡的。其实DataFrame
中的数据是以一个或者多个二维块存放的
class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)
:data
:可以是一个二维数组、字典、或者DataFrame
。index
:一个Index
或者array-like
对象(必须为一维的),它指定了行标签。如果未提供,则使用np.arange(n)
。columns
:一个Index
或者array-like
对象(必须为一维的),它指定了列标签。如果未提供,则使用np.arange(n)
。dtype
:指定数据类型。如果为None
,则数据类型被自动推断copy
:一个布尔值。如果为True
,则拷贝输入数据data
常见的构造
DataFrame
有以下情况:- 二维
ndarray
:data
就是数据,此时可以传入index/columns
参数 - 一个字典,其中字典的值为一维数组、一维列表、一维元组:此时每个键就是列索引,对应的值就是列数据。要求所有序列的长度相同
numpy
的结构化数组:类似于由数组组成的字典Series
组成的字典:此时每个键就是列索引,对应的Series
就是列数据。如果没有显式的指定行索引,那么各个Series
的索引将会被合并成DataFrame
的行索引。- 字典的字典:各个内层字典会成为一列,键会被合并成结果的行索引。跟
Series 组成的字典
情况一致 - 字典或者
Series
的列表:每一项将会成为DataFrame
的一行。字典的键、Series
索引的并集将会成为DataFrame
的列索引 - 列表、元组组成的列表:类似于二维
ndarray
- 另一个
DataFrame
:该DataFrame
的索引将会被沿用,除非显式指定其他索引 numpy
的MaskedArray
:类似于二维ndarray
,只是掩码值在结果DataFrame
中会变成NA/缺失值
columns
/index
有两种作用:如果构造的DataFrame
没有索引,则它们分别给索引赋值;如果构造的DataFrame
已有索引,则它们按照指定顺序排列指定的索引。可以通过下面的类方法从其他数据结构中创建
DataFrame
:DataFrame.from_dict(data, orient='columns', dtype=None)
:从字典中创建DataFrame
。data
:是个字典,其格式为:{key:array-like}
或者{key:dict}
。orient
:指定了key
为行还是列。参数的值为'columns'
(key
为列的label
,默认行为);或者'index'
(key
为行的label
)dtype
:数据类型。如果为None
,则自动推断。
DataFrame.from_items(items, columns=None, orient='columns')
:从元组序列中创建DataFrame
。items
:为元组序列,元组格式为:(key,value)
,其中value
为表示一维数据的序列或者Series
对象。columns
:一个序列,给出列的labels
。- 当
orient='index'
时必须传入(此时key
指定的是行的label
),且长度不能大于DataFrame
的列数。 - 当
orient='columns
时,key
就是列的label
,此时columns
关键字参数指定的列label
必须等于某个key
;否则抛出异常。
- 当
orient
:参见.from_dict
的解释。
你可以将
DataFrame
转换为其他数据类型。.to_dict(*args, **kwargs)
方法:转换成字典。参数orient
决定了转换方式。orient ='dict'
:字典的形式为:{col_label:{index_label:value}}
(默认行为)orient ='list'
:字典的形式为:{col_label:[values]}
orient ='series'
:字典的形式为:{col_label:Series(values)}
orient ='split'
:字典的形式为:{'index':[index_labels],'columns':[col_labels],'data':[values]}
orient ='records'
:字典的形式为:[{col_label:value},...,{col_label:value}]
orient ='index'
:字典的形式为:{index_label:{col_label:value}}
- 你可以使用简化字符串,如
's'
代表'series'
,'sp'
代表'split'
.to_records(index=True, convert_datetime64=True)
方法:转换成结构数组。index
:一个布尔值。如果为True
,则结果中包含index
convert_datetime64
:一个布尔值,如果为True
,则转换DatetimeIndex
为datetime.datetime
可以将
DateFrame
转换成字符串:xxxxxxxxxx
to_string(buf=None, columns=None, col_space=None, header=True, index=True, na_rep='NaN', formatters=None, float_format=None, sparsify=None, index_names=True, justify=None, line_width=None, max_rows=None, max_cols=None, show_dimensions=False)buf
:一个StringIO-like
对象,是写入的buffer
columns
:一个序列,指定了列标签的一个子集,该子集的数据被输出col_space
:一个整数,指定了每一列的最小宽度header
:一个布尔值。如果为True
,则添加头部信息(column labels
)index
:一个布尔值。如果为True
,则添加index labels
na_rep
:一个字符串,代表数值NaN
float_format
:浮点数的格式化函数(单参数)。应用于浮点列formatters
:一个单参数函数的列表(列表长度等于列数)或者一个单参数函数的字典。- 如果是列表,则根据列号,对应使用格式化函数
- 如果是字典,则根据列
label
,对应使用格式化函数
sparsify
:一个布尔值。Set to False for a DataFrame with a hierarchical index to print every multiindex key at each row, default Trueindex_names
:一个布尔值。如果为True
,则添加index names
justify
:指定column label
的对齐方式。可以为'left'
(左对齐),或者'right'
(右对齐)。默认为None
返回转换后的字符串。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论