DataFrame是一个类似表格的二维数据结构,索引包括列索引和行索引,每列可以是不同的值类型(数值、字符串、布尔值等)。DataFrame的每一行和每一列都是一个Series。...,默认第一行,header = None, 没有表头,全部为数据内容 encoding:文件编码方式,不设置此选项, Pandas 默认使用 UTF-8 来解码。...列的标签值查询 「iloc」 通过行号索引行数据,行号从0开始,逐次加1。...「注意」 当使用显式索引(即data['a':'c'])作切片时,结果「包含」最后一个索引;而当使用隐式索引(即 data[0:2]) 作切片时,结果「不包含」最后一个索引。...1]) # 删除行 df.drop_duplicates() # 删除重复值 df.fillna('missing')# 使用字符串填补 df.replace('old', 'new') # old替换成
索引(index):与一维数组值一一对应的标签。利用索引,我们可非常方便得在Series数组中进行取值。...: >>> a['第一列'] 102 >>> a[['第一列', '第二列']] 第一列 102 第二列 212 dtype: int64 当然,你也可以使用以往的数字下标从数组中取值: >>> a[0...与Series类似,DataFrame数组也有一个index索引,在不指定索引时,通常会自动生成从零开始步长为1的索引。...此外DataFrame数组还有一个列名,索引和列名是从数组中挑选数据的重要依据。...3.2 创建DataFrame数组 (1)通过字典创建 通过字典来创建DataFrame数组时,字典的键将会自动成DataFrame数组的列名,字典的值必须是可迭代对象,例如Series、numpy数组
以下面经典的titanic数据集为例,可以从两个方面特性来认识DataFrame: ? DataFrame是一个行列均由多个Series组成的二维数据表框,其中Series可看做是一个一维向量。...当然,这里只是将其"看做"而非等价,是因为其与一个严格的dict还是有很大区别的,一个很重要的形式上区别在于:DataFrame的列名是可以重复的,而dict的key则是不可重复的。...通常情况下,[]常用于在DataFrame中获取单列、多列或多行信息。具体而言: 当在[]中提供单值或多值(多个列名组成的列表)访问时按列进行查询,单值访问不存在列名歧义时还可直接用属性符号" ....切片类型与索引列类型不一致时,引发报错 2. loc/iloc,可能是除[]之外最为常用的两种数据访问方法,其中loc按标签值(列名和行索引取值)访问、iloc按数字索引访问,均支持单值访问或切片查询...在DataFrame中,filter是用来读取特定的行或列,并支持三种形式的筛选:固定列名(items)、正则表达式(regex)以及模糊查询(like),并通过axis参数来控制是行方向或列方向的查询
二者之间主要区别是: 从数据结构上看: numpy的核心数据结构是ndarray,支持任意维数的数组,但要求单个数组内所有数据是同质的,即类型必须相同;而pandas的核心数据结构是series和dataframe...、切片访问、通函数、广播机制等 series是带标签的一维数组,所以还可以看做是类字典结构:标签是key,取值是value;而dataframe则可以看做是嵌套字典结构,其中列名是key,每一列的series...自然毫无悬念 dataframe:无法访问单个元素,只能返回一列、多列或多行:单值或多值(多个列名组成的列表)访问时按列进行查询,单值访问不存在列名歧义时还可直接用属性符号" ....检测各行是否重复,返回一个行索引的bool结果,可通过keep参数设置保留第一行/最后一行/无保留,例如keep=first意味着在存在重复的多行时,首行被认为是合法的而可以保留 删除重复值,drop_duplicates...两种数据结构作图,区别仅在于series是绘制单个图形,而dataframe则是绘制一组图形,且在dataframe绘图结果中以列名为标签自动添加legend。
how:表示数据合并的方式,支持’inner’(默认值)、‘left’、‘right’、'outer’共4个取值。 on:表示left与right合并的键。...how参数的取值‘inner’代表基于left与right的共有的键合并,类似于数据库的内连接操作;'left’代表基于left的键合并,类似于数据库的左外连接操作;'right’代表基于right的键合并...ignore_index:是否忽略索引,可以取值为True或False(默认值)。若设为True,则会在清除结果对象的现有索引后生成一组新的索引。...重叠合并数据是一种并不常见的操作,它主要将一组数据的空值填充为另一组数据中对应位置的值。pandas中可使用combine_first()方法实现重叠合并数据的操作。...'score': ['A', 'B', 'C', 'B']}) # 两个dataframe在合并时候有相同的列名,需要使用属性lsuffix和rsuffix指定相同列名的后缀 score_df.join
,但特殊的同时与普通的一维数组不同 列表只能有从0开始的整数索引,而series则可以自定义标签索引,这一点来看,跟字典又比较相似,因此series又可以拥有类似字典的操作方式,series 的标签索引可以随时更新修改替换...而DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series组成的字典,不过这些Series公用一个索引。...切片 和 取值 使用 切片,取出元素 money_series.loc['c':'a':-1] # 从c取到 a,倒序 """ c 10 b 300 a 200 Name: money...目前而言,使用最多的应该会是读取文本文件的方式,读取到文件后就是一个dataframe 对象,之后的操作都是基于dataframe和series 来。...series 中的常用函数 1. get() 和 get_value() 方法 因为series 具有字典的一些特征,所以允许使用get 方法来获取数值,如果没有则返回默认值,而get_value 功能类似
DataFrame和Series是Pandas最基本的两种数据结构 可以把DataFrame看作由Series对象组成的字典,其中key是列名,值是Series Series和Python...,列索引分别为姓名,职业和年龄 pd.DataFrame() 默认第一个参数放的就是数据 - data 数据 - columns 列名 - index 行索引名 pd.DataFrame(data...DataFrame的loc 属性获取数据集里的一行,就会得到一个Series对象 first_row = data.loc[941] first_row 3.可以通过 index 和 values属性获取行索引和值...df按行加载部分数据:先打印前5行数据 观察第一列 print(df.head()) 最左边一列是行号,也就是DataFrame的行索引 Pandas默认使用行号作为行索引。...) → dataframeGroupby对象就是把continent取值相同的数据放到一组中 df.groupby(‘continent’)[字段] → seriesGroupby对象 从分号组的Dataframe
[:][m:n] DataFrame.head/tail():访问前/后五行 整数标签的特殊情况 为了防止计算机不知道用户输入的索引是基于位置还是基于标签的,pd 整数标签的索引是基于标签的,也就是说我们不能像列表一样使用...进行切片,对行的指定要使用索引或者条件,对列的索引必须使用列名称,如果有多列,则还需要借助[]将列名称括起来。...以加法为例,它会匹配索引相同(行和列)的进行算术运算,再将索引不匹配的数据视作缺失值,但是也会添加到最后的运算结果中,从而组成加法运算的结果。...随机抽样 随机抽样用到的是 df.sample(n)函数,该函数返回值为对于 df 以行为抽样单位进行的随机抽样,返回值是从总体随机抽出的 n 行组成的 df(默认不可以重复,可以调整参数) import...传入一个函数名组成的列表,则会将每一个函数的函数名作为返回值的列名,如果不希望使用函数名作为列名,可以将列表中的元素写成类似’(column_name,function)'的元组形式来指定列名为name
选择特定行和列 df.loc[index, 'ColumnName'] 使用方式: 通过索引标签和列名选择DataFrame中的特定元素。 示例: 选择索引为1的行的“Name”列的值。...合并DataFrame(基于键) pd.merge(df1, df2, on='KeyColumn', how='inner') 使用方式: 使用指定列进行合并,指定合并方式(内连接、左连接、右连接、外连接...从文件加载数据到DataFrame df = pd.read_csv('filename.csv') 使用方式: 从文件中加载数据到DataFrame。 示例: 从CSV文件加载数据。...')) 使用方式: 在使用merge时,处理两个DataFrame中相同列名的情况。...示例: 合并两个DataFrame,处理重复列名。
例如, DataFrame可以在其行(axis=0)或列(axis=1)上进行分组。然后,将一个函数应用(apply)到各个分组并产生一个新值。...(df['key1']).describe() 关键技术: size跟count的区别是: size计数时包含NaN值,而count不包含NaN值。...如果说用groupby进行数据分组,可以看做是基于行(或者说是index)操作的话,则agg函数则是基于列的聚合操作。...) 对于DataFrame,你可以定义一组应用于全部列的一组函数,或不列应用不同的函数。...具体的办法是向agg传入一个从列名映射到函数的字典: 只有将多个函数应用到至少一列时,DataFrame才会拥有层次化的列 2.3.返回不含行索引的聚合数据 到目前为止,所有例中的聚合数据都有由唯一的分组键组成的索引
infer,表示自动识别 names 接收array,表示列名,默认为None index_col 接收int、sequence或False,表示索引列的位置,取值为sequence则代表多重索引,默认为...,表示读取前n行,默认为None 3.使用read _csv 函数读取CSV文件。。...#文件不包含表头行,允许自动分配默认列名,也可以指定列名。...或False,表示索引列的位置,取值为sequence则代表多重索引,默认为None dtypel 接收dict,代表写入的数据类型(列名为key,数据格式为values),默认为None ----...combine_first()方法的语法格式: combine_first(other) 上述方法中只有一个参数other,该参数用于接收填充缺失值的DataFrame对象。
例如,Parquet和ORC等柱状格式使从列的子集中提取值变得更加容易。 基于行的存储格式(如Avro)可有效地序列化和存储提供存储优势的数据。然而,这些优点通常以灵活性为代价。...方法底层还是调用text方法,先加载数据封装到DataFrame中,再使用as[String]方法将DataFrame转换为Dataset,实际中推荐使用textFile方法,从Spark 2.0开始提供...无论是text方法还是textFile方法读取文本数据时,一行一行的加载数据,每行数据使用UTF-8编码的字符串,列名称为【value】。 ...关于CSV/TSV格式数据说明: SparkSQL中读取CSV格式数据,可以设置一些选项,重点选项: 1)、分隔符:sep 默认值为逗号,必须单个字符 2)、数据文件首行是否是列名称:header...默认值为false,如果数据文件首行是列名称,设置为true 3)、是否自动推断每个列的数据类型:inferSchema 默认值为false,可以设置为true 官方提供案例: 当读取CSV/
1.3.1 常用的检测方法有3σ原则(拉依达准则)和箱形图 3σ原则是基于正态分布的数据检洳而箱形图没有什么严格的要求,可以检测任意一组数据, 1.3.1.1 3σ原则 是指假设一组检测数据只含有随机误差...2.3 根据行索引合并数据 join()方法能够通过索引或指定列来连接多个DataFrame对象 2.3.1 join()方法 on:名称,用于连接列名。...注意:使用combine_first()方法合并两个DataFrame对象时,必须确保它们的行索引和列索引有重叠的部分 3....prefix:表示列名的前缀,默认为None。(‘col’) prefix_sep:用于附加前缀作为分隔符使用,默认为“_”。 ...哑变量又称应拟变量,名义变量,从名称上看就知道,它是人为虚设的变量,用来反映某个交量的不间类别 使用哑变最处理类别转换,事实上就是将分类变量转换为哑变最矩阵或指标矩阵,矩阵的值通常用“0”或“1”表示
1.基于Numpy,基于Matplotlib,把这两个库进行了再封装 2.拥有Series,DataFrame两种数据种类型(Series即是一个序列,又是一个hash表)(DataFrame把Series...如果没有列名,我们可以指定列名,要求是一个序列(['name','sex','age']) engine=None 使用C或pythn作为计算引擎(C的速度快,python比较精确)... {'c', 'python'} skiprows=None 跳过多少行 nrows=None 取多少行 skipfooter=0 从尾部跳过...20]: #只匹配返回结果为True的 S[bls] Out[20]: a 6 b 6 d 7 g 9 dtype: int64 显示索引&隐式索引 显示索引 .loc[] 只能使用关联型的索引取值...,是一个闭区间,适合查找一个指定的值 隐式索引 .iloc[] 只能使用枚举型的索引取值,是一个半闭区间,适合查找一个范围的值 In [45]: #离散类型的 : 关联型 S['a':'j'] . .
1.导入库 使用 pandas,首先就得熟悉它的两个主要数据结构: Series和 Dataframe。...; 用iloc进行索引时,中括号[ ]中的值必须是整数,与列表list索引取值类似,例如obj.iloc[2]就是取第3行的值。...其实, Dataframe中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。...设置给定数据中的origin字段为DataFrame的列名,即columns的值,结果如下所示 army.index = army.origin del army['origin'] army ?...打印列名为veterans的所有值,效果如下: army['veterans'] ? image.png Step 6.
如果仅给定列表,不指定index参数,默认索引为从0开始的数字。注意:索引标签为字符串和整数的混合类型。记住不要使用浮点数作为索引,并且尽量避免使用混合类型索引。...two':[2,4,6]}) # 不指定索引,默认仍从0开始。...这里还要注意一点:由于type列对应了不同的空气质量要素,而不同的空气质量要素具有不同的取值范围,因此在使用describe查看统计信息时,应针对不同的要素进行,这样才有具体意义,才能看出每个要素的值分布...Pandas主要有两种数据查询选择操作: 基于标签的查询 基于整数的位置索引查询 Pandas在选择列时,无需使用 date[:, columns] 的形式,先使用 : 选择所有行,再指定 columns...如果想丢弃缺失值,可使用 .dropna 方法,即 data.dropna() 但对于时间序列而言,一般不选择直接丢弃缺失时刻,否则可能造成时间缺失,破坏连续性。因此,可以选择补齐数据。
str类型 是直接指定工作表的名称 int类型 是指定从0开始的工作表的索引, 所以sheelt_name默认值是0,即第一个工作表。...name=None: 传入一列类数组类型的数据,用来作为数据的列名。如果文件数据不包含标题行,要显式的指出header=None。 skiprows:int类型, 类列表类型或可调函数。...将基于该子集。...本文使用的示例文件具有中英文两行列名,默认header=0是使用第一行数据作为数据的列名。...df_dict = pd.read_excel(file, sheet_name='Sheet1') header=1, 使用指定使用第二行的英文列名。
我们可通过限定时间ID和样本ID获得对应的Series和DataFrame。 由于这些对象的常用操作方法十分相似,因此本文主要使用DataFrame进行演示。...打印出来的DataFrame包含索引(第一列),列名(第一行)及数据内容(除第一行和第一列之外的部分)。 此外,read_csv函数有很多参数可以设置,如下所示。...filepath_or_buffer csv文件的路径 sep = ',' 分隔符,默认为逗号 header = 0 int类型,0代表第一行为列名,若设定为None将使用数值列名 names = []...02 读取指定行和指定列 使用参数usecol和nrows读取指定的列和前n行,这样可以加快数据读取速度。读取原数据的两列、两行示例如下。...在数据sample.csv中,“小青”的分数中有的取值为99999,这里令其读取为缺失值,操作如下: csv = pd.read_csv('data/sample.csv',
使用pandas之前要导入包: import numpy as np import pandas as pd import random #其中有用到random函数,所以导入 一、dataframe...(data,index=index) (3)可以看出像列名‘att’等对应的都是一个list的形式,为例填充这些列名对应的值,首先要把值的形式定义好,形成list #随机生成3000个test号 #random.sample...关键点是axis=1,指明是列的拼接 三、dataframe插入行 插入行数据,前提是要插入的这一行的值的个数能与dataframe中的列数对应且列名相同,思路:先切割,再拼接。...: insertRow2_index = df4[df4.Bool == 3].index.tolist() .根据索引获取这两行的值: insertRow2 = [] for x in insertRow2..._index: #注意.values的使用,只获取值,不带列名 insertRow2.append(df4.loc[x].values) insertRow22 = pd.DataFrame
有很多种实现的途径,我最喜欢的方式是传一个字典给DataFrame constructor,其中字典中的keys为列名,values为列的取值。 ?...按行从多个文件中构建DataFrame 假设你的数据集分化为多个文件,但是你需要将这些数据集读到一个DataFrame中。 举例来说,我有一些关于股票的小数聚集,每个数据集为单天的CSV文件。...为了避免这种情况,我们需要告诉concat()函数来忽略索引,使用默认的整数索引: ? 10. 按列从多个文件中构建DataFrame 上一个技巧对于数据集中每个文件包含行记录很有用。...需要注意的是,这个方法在索引值不唯一的情况下不起作用。 读者注:该方法在机器学习或者深度学习中很有用,因为在模型训练前,我们往往需要将全部数据集按某个比例划分成训练集和测试集。...注意,这并没有修改基础的数据类型,而只是修改了数据的显示结果。 你也可以重置任何一个选项为其默认值: ? 对于其它的选项也是类似的使用方法。 25.
领取专属 10元无门槛券
手把手带您无忧上云