3、 DataFrame数据结构 DataFrame表示的是矩阵数据表,每一列可以是不同的值类型(数值、字符串、布尔值等)。...DataFrame既包含行索引,也包含列索引,可以视为多个Series集合而成,是一个非常常用的数据结构。...对于顺序数据,例如时间序列,重建索引时可能会需要进行插值或填值。method方法可选参数允许我们使用ffill等方法在重建索引时插值,ffill方法会将值前项填充;bfill是后向填充。...在DataFrame中,reindex可以改变行索引、列索引,当仅传入一个序列,会默认重建行索引。...fill_value 前向或后向填充时缺失数据的代替值
的数据类型为pandas.core.indexing,_LocIndexer, iloc的数据类型为pandas.core.indexing,_iLocIndexer, 用loc进行索引时,中括号[...]中的值必须是索引的真实值; 用iloc进行索引时,中括号[ ]中的值必须是整数,与列表list索引取值类似,例如obj.iloc[2]就是取第3行的值。...image.png 3.Pandas基本数据类型-DataFrame DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型 。...其实, Dataframe中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。...image.png 4.Pandas快速进阶 4.1 DataFrame创建 创建行和列都为自定义值的DataFrame from pandas import DataFrame import numpy
#查看各列数据类型、数据框行列数 print(data.dtypes) print() print(data.shape) ?...譬如这里我们编写一个使用到多列数据的函数用于拼成对于每一行描述性的话,并在apply()用lambda函数传递多个值进编写好的函数中(当调用DataFrame.apply()时,apply()在串行过程中实际处理的是每一行数据...输出多列数据 有些时候我们利用apply()会遇到希望同时输出多列数据的情况,在apply()中同时输出多列时实际上返回的是一个Series,这个Series中每个元素是与apply()中传入函数的返回值顺序对应的元组...三、聚合类方法 有些时候我们需要像SQL里的聚合操作那样将原始数据按照某个或某些离散型的列进行分组再求和、平均数等聚合之后的值,在pandas中分组运算是一件非常优雅的事。...当为多个时传入这些变量名称列表,DataFrame对象通过groupby()之后返回一个生成器,需要将其列表化才能得到需要的分组后的子集,如下面的示例: #按照年份和性别对婴儿姓名数据进行分组 groups
#查看各列数据类型、数据框行列数 print(data.dtypes) print() print(data.shape) ?...● 多列数据 apply()最特别的地方在于其可以同时处理多列数据,譬如这里我们编写一个使用到多列数据的函数用于拼成对于每一行描述性的话,并在apply()用lambda函数传递多个值进编写好的函数中...(当调用DataFrame.apply()时,apply()在串行过程中实际处理的是每一行数据而不是Series.apply()那样每次处理单个值),注意在处理多个值时要给apply()添加参数axis...三、聚合类方法 有些时候我们需要像SQL里的聚合操作那样将原始数据按照某个或某些离散型的列进行分组再求和、平均数等聚合之后的值,在pandas中分组运算是一件非常优雅的事。...当变量为1个时传入名称字符串即可,当为多个时传入这些变量名称列表,DataFrame对象通过groupby()之后返回一个生成器,需要将其列表化才能得到需要的分组后的子集,如下面的示例: #按照年份和性别对婴儿姓名数据进行分组
as pd #读入数据 data = pd.read_csv('data.csv') data.head() #查看各列数据类型、数据框行列数 print(data.dtypes) print(...譬如这里我们编写一个使用到多列数据的函数用于拼成对于每一行描述性的话,并在apply()用lambda函数传递多个值进编写好的函数中(当调用DataFrame.apply()时,apply()在串行过程中实际处理的是每一行数据...有些时候我们利用apply()会遇到希望同时输出多列数据的情况,在apply()中同时输出多列时实际上返回的是一个Series,这个Series中每个元素是与apply()中传入函数的返回值顺序对应的元组...三、聚合类方法 有些时候我们需要像SQL里的聚合操作那样将原始数据按照某个或某些离散型的列进行分组再求和、平均数等聚合之后的值,在pandas中分组运算是一件非常优雅的事。...当为多个时传入这些变量名称列表,DataFrame对象通过groupby()之后返回一个生成器,需要将其列表化才能得到需要的分组后的子集,如下面的示例: #按照年份和性别对婴儿姓名数据进行分组 groups
range(5), 'V2': range(5) }) df.sample(frac=1) 图4 2.3 利用类别型数据减少内存消耗 当我们的数据框中某些列是由少数几种值大量重复形成时,会消耗大量的内存...2.4 pandas中的object类型陷阱 在日常使用pandas处理数据的过程中,经常会遇到object这种数据类型,很多初学者都会把它视为字符串,事实上object在pandas中可以代表不确定的数据类型...在pandas中我们可以对单个Series查看hanans属性来了解其是否包含缺失值,而结合apply(),我们就可以快速查看整个数据框中哪些列含有缺失值: df = pd.DataFrame({...在pandas中我们可以利用rank()方法计算某一列数据对应的排名信息,但在rank()中有参数method来控制具体的结果计算策略,有以下5种策略,在具体使用的时候要根据需要灵活选择: 「average...(method='dense') 图15 「first」 在first策略下,当多个元素相同时,会根据这些相同元素在实际Series中的顺序分配排名: s = pd.Series([2, 2, 2,
图4 2.3 利用类别型数据减少内存消耗 当我们的数据框中某些列是由少数几种值大量重复形成时,会消耗大量的内存,就像下面的例子一样: import numpy as np pool = ['A',...2.4 pandas中的object类型陷阱 在日常使用pandas处理数据的过程中,经常会遇到object这种数据类型,很多初学者都会把它视为字符串,事实上object在pandas中可以代表不确定的数据类型...图10 2.5 快速判断每一列是否有缺失值 在pandas中我们可以对单个Series查看hanans属性来了解其是否包含缺失值,而结合apply(),我们就可以快速查看整个数据框中哪些列含有缺失值...图11 2.6 使用rank()计算排名时的五种策略 在pandas中我们可以利用rank()方法计算某一列数据对应的排名信息,但在rank()中有参数method来控制具体的结果计算策略,有以下5...图15 first 在first策略下,当多个元素相同时,会根据这些相同元素在实际Series中的顺序分配排名: s = pd.Series([2, 2, 2, 1, 3]) s.rank(method
有时候我们也会画出一个相对小的范围,在这个范围内的对象类型单一,且遵循统一的规律,比如这几年风靡各地的“创客空间”,其中的对象就是喜欢创造的人,他们遵循的规律就是“创造,改变世界”。...实现与应用 在程序中,创建行向量或者列向量,一般以NumPy数组实现。...如果要创建列向量,可以这样操作: v = u.reshape(-1,1) v 输出: array([[1], [6], [7]]) 此外,在Pandas的DataFrame对象中...在本示例中,每个文本的词语比较少,在真实的项目中,每个文本的词语会很多,如果多个文本,就会出现很多个特征,对于某一个文本而言,会出现在很多特征的值是0。...除了将词语出现次数进行向量化之外,在NLP中,还会实现TF-IDF向量化和哈希向量化,具体内容请参阅《数据准备和特征工程》(电子工业出版社)。
当然也可以每个列表使用一张工作簿,只用第一列。...)); //设置对应单元格的值 } else { //未创建过的行,直接创建行、创建列 // sheetHidden.setColumnWidth(j, 4000...(dataList.get(j)); //设置对应单元格的值 } } } index 代表第几个下拉框,也就是在隐藏工作簿的第几列,dataList表示下拉框的内容 创建公式:...$” + arr[index] + “$1:$” + arr[index] + “$” + dataList.size(); Sheet2第A1到A5000作为下拉列表来源数据 xls和xlsx生成下拉框的选项不一样...(dataList.get(j)); //设置对应单元格的值 } else { //未创建过的行,直接创建行、创建列
数据框的内部表示 在底层,Pandas 按照数据类型将列分成不同的块(blocks)。这是 Pandas 如何存储数据框前十二列的预览。 你会注意到这些数据块不会保留对列名的引用。...Pandas 中的许多类型包含了多个子类型,因此可以使用较少的字节数来表示每个值。例如,float 类型就包含 float16、float32、float64 等子类型。...当每个指针占用一字节的内存时,每个字符的字符串值占用的内存量与 Python 中单独存储时相同。...category 类型在底层使用整数类型来表示该列的值,而不是原始值。Pandas 用一个单独的字典来映射整数值和相应的原始值之间的关系。当某一列包含的数值集有限时,这种设计是很有用的。...当对象列中少于 50% 的值时唯一对象时,我们应该坚持使用 category 类型。但是如果这一列中所有的值都是唯一的,那么 category 类型最终将占用更多的内存。
通常情况下,[]常用于在DataFrame中获取单列、多列或多行信息。具体而言: 当在[]中提供单值或多值(多个列名组成的列表)访问时按列进行查询,单值访问不存在列名歧义时还可直接用属性符号" ...."访问 切片形式访问时按行进行查询,又区分数字切片和标签切片两种情况:当输入数字索引切片时,类似于普通列表切片;当输入标签切片时,执行范围查询(即无需切片首末值存在于标签列中),包含两端标签结果,无匹配行时返回为空...例如,当标签列类型(可通过df.index.dtype查看)为时间类型时,若使用无法隐式转换为时间的字符串作为索引切片,则引发报错 ? 切片形式返回行查询,且为范围查询 ?...切片类型与索引列类型不一致时,引发报错 2. loc/iloc,可能是除[]之外最为常用的两种数据访问方法,其中loc按标签值(列名和行索引取值)访问、iloc按数字索引访问,均支持单值访问或切片查询...4. isin,条件范围查询,一般是对某一列判断其取值是否在某个可迭代的集合中。即根据特定列值是否存在于指定列表返回相应的结果。 5. where,妥妥的Pandas仿照SQL中实现的算子命名。
,到length(数据框) columns:数据框列的标签,可用于索引数据框,默认同index dtype:强制数据框内数据转向的数据类型,如(float64) copy:是否对输入的数据采取复制的方法生成数据框...True时,以左侧数据框的行标签作为联结键 right_index:为True时,以右侧数据框的行标签作为联结键 sort:为True时,在合并之后以联结键为排序依据进行排序 suffixes:一个元组...可以看出,当how=’inner‘时,得到的合并数据框会自动剔除存在数据缺失的行,只保留完美的行,'outer'时则相反 dataframe.join() join()的一些常用参数: other:...数据框中有多列数值时: df['baz_new'] = df['baz']*2 df ? df.pivot(index='foo',columns='bar') ?...7.数据框的条件筛选 在日常数据分析的工作中,经常会遇到要抽取具有某些限定条件的样本来进行分析,在SQL中我们可以使用Select语句来选择,而在pandas中,也有几种相类似的方法: 方法1: A =
数据处理过程中,经常需要对数据进行排序,使数据按指定的顺序排列(升序或降序)。 在Pandas中,排序功能已经实现好了,我们只需要调用对应的方法即可。...如果要按多重索引内的多个行索引排序,可以给level传入一个列表,这样会先按列表中的第一个行索引排序,当第一个行索引有相等的值时,再按第二个行索引进行排序,以此类推。...对应的ascending可以传入一个值,表示多个行索引都升序或都降序,如果要使多个行索引有升序有降序,可以给ascending传入一个列表,列表长度与level的列表长度必须相等。 ?...如果对行排序,by参数必须传入列索引中的值,如果对列排序,by参数必须传入行索引中的值。 因为DataFrame中存储的每一列数据类型通常不一样,有些数据类型之间不支持排序,所以不一定能对列排序。...按多个列进行排序 ? 给by参数传入多个列索引值时(用列表的方式),即可以对多个列进行排序。当第一列中有相等的数据时,依次按后面的列进行排序。ascending参数的用法与按多重索引排序一样。
1 数据结构的简介 pandas中有两类非常重要的数据结构,就是序列Series和数据框DataFrame.Series类似于NumPy中的一维数组,可以使用一维数组的可用函数和方法,而且还可以通过索引标签的方式获取数据...的类型: 通过字典列表的方式创建数据框 print("第二种方法创建DataFrame") dict2={'a':[1,2,3,4...可以看到,当有多个条件的查询,需要在&或者|的两端的条件括起来 4 对DataFrames进行统计分析 Pandas为我们提供了很多描述性统计分析的指标函数,包括,总和,均值,最小值,最大值等。...#当实际工作中我们需要处理的是一系列的数值型数据框,可以使用apply函数将这个stats函数应用到数据框中的每一列 df=pd.DataFrame(np.array([d1,d2,d3]).T,columns...以上很简单的创建了数值型数据的统计性描述,但对于离散型数据就不能使用该方法了。我们在统计离散变量的观测数、唯一值个数、众数水平及个数,只需要使用describe方法就可以实现这样的统计了。
在使用不同的缺失值策略时,需要注意以下几个问题: 缺失值的处理的前提是已经可以正确识别所有缺失值字段,关于识别的问题在使用Pandas读取数据时可通过设置 na_values 的值指定。...更有效的是,如果数据中的缺失值太多而无法通过列表形式穷举时,replace 还支持正则表达式的写法。 当列中的数据全部为空值时,任何替换方法都将失效,任何基于中位数、众数和均值的策略都将失效。...当列中含有极大值或极小值的 inf 或 -inf 时,会使得 mean() 这种方法失效,因为这种情况下将无法计算出均值。...应对思路是使用 median 中位数做兜底策略,只要列中有数据,就一定会有中位数。...subset:要判断重复值的列,可以指定特定列或多个列。默认使用全部列。
可以看到打印的数据一共有两列,第二列是我们刚才创建的时候输入的数据,第一列就是它的索引。...由于我们创建的时候没有特意指定索引,所以pandas会自动为我们创建行号索引,我们可以通过Series类型当中的values和index属性查看到Series当中存储的数据和索引: ?...不仅如此,索引数组也是可以接受的,我们可以直接查询若干个索引的值。 ? 另外在创建Series的时候,重复的索引也是允许的。同样当我们使用索引查询的时候也会得到多个结果。 ?...可以理解成是非法值或者是空值,在我们处理特征或者是训练数据的时候,经常会遇到存在一些条目的数据的某个特征空缺的情况,我们可以通过pandas当中isnull和notnull函数检查空缺的情况。 ?...根据调查资料显示,算法工程师日常的工作有70%的份额投入在了数据处理当中,真正用来实现模型、训练模型的只有30%不到。因此可见数据处理的重要性,想要在行业当中有所发展,绝不仅仅是学会模型就足够的。
你可以粗略浏览本文,了解Pandas的常用功能;也可以保存下来,作为以后数据处理工作时的速查手册,没准哪天就会用上呢~ 1创建数据对象 Pandas最常用的数据对象是数据框(DataFrame)和Series...数据框与R中的DataFrame格式类似,都是一个二维数组。Series则是一个一维数组,类似于列表。数据框是Pandas中最常用的数据组织方式和对象。...,列名为字典的3个key,每一列的值为key对应的value值 2 查看数据信息 查看信息常用方法包括对总体概况、描述性统计信息、数据类型和数据样本的查看,具体如表2所示: 表2 Pandas常用查看数据信息方法汇总...方法用途示例示例说明info查看数据框的索引和列的类型、费控设置和内存用量信息。...使用include= 'all'查看所有类型数据dtype查看数据框每一列的数据类型In: print(data2.dtypes) Out: col1 int64 col2 object
2.2.1 basic_stages basic_stages中包含了对数据框中的行、列进行丢弃/保留、重命名以及重编码的若干类: ColDrop: 这个类用于对指定单个或多个列进行丢弃...,'any'相当于条件或,即满足至少一个条件即可删除;'all'相当于条件且,即满足全部条件才可删除;'xor'相当于条件异或,即当恰恰满足一个条件时才会删除,满足多个或0个都不进行删除。...型,决定是否在计算完成后把旧列删除,默认为True,即对应列的计算结果直接替换掉对应的旧列 suffix:str型,控制新列后缀名,当drop参数设置为False时,结果列的列名变为其对应列+suffix...colbl_sfx:str型,控制新列后缀名,当drop参数设置为False时,结果列的列名变为其对应列+suffix参数指定的后缀名;当drop设置为False时,此参数将不起作用(因为新列直接继承了对应旧列的名称...当columns参数设置为None时,这个参数传入的列名列表中指定的列将不进行哑变量处理,默认为None,即不对任何列进行排除 drop_first:bool型或str型,默认为True,这个参数是针对哑变量中类似这样的情况
2.2.1 basic_stages basic_stages中包含了对数据框中的行、列进行丢弃/保留、重命名以及重编码的若干类: ColDrop: 这个类用于对指定单个或多个列进行丢弃,其主要参数如下...:0或1,0表示删除含有缺失值的行,1表示删除含有缺失值的列 下面是举例演示,首先我们创造一个包含缺失值的数据框: import numpy as np # 创造含有缺失值的示例数据 df = pd.DataFrame...,即当恰恰满足一个条件时才会删除,满足多个或0个都不进行删除。...,当drop参数设置为False时,结果列的列名变为其对应列+suffix参数指定的后缀名;当drop设置为False时,此参数将不起作用(因为新列直接继承了对应旧列的名称) result_columns...,默认为False即忽略缺失值 exclude_columns:list,当columns参数设置为None时,这个参数传入的列名列表中指定的列将不进行哑变量处理,默认为None,即不对任何列进行排除
领取专属 10元无门槛券
手把手带您无忧上云