我们可能熟悉使用INDEX、SMALL等在给定单列或单行数组的情况下,返回满足一个或多个条件的值的列表。这是一项标准的公式技术。...在《Excel公式练习32:将包含空单元格的多行多列单元格区域转换成单独的列并去掉空单元格》中,我们讲述了一种方法,给定由多个列组成的单元格区域,从该区域返回由所有非空单元格组成的单个列。...可以很容易地验证,在该公式中的单个条件可以扩展到多个条件,因此,我们现在有了从一维数组和二维数组中生成单列列表的方法。 那么,可以更进一步吗?...本文提供了一种方法,在给定一个或多个相同布局的工作表的情况下,可以创建另一个“主”工作表,该工作表仅由满足特定条件的所有工作表中的数据组成。并且,这里不使用VBA,仅使用公式。...实际上,该技术的核心为:通过生成动态汇总小计数量的数组,该小计数量由来自每个工作表中符合条件(即在列D中的值为“Y”)的行数组成,然后将公式所在单元格相对行数与该数组相比较,以便有效地确定公式所在行中要指定的工作表
DataFrame既有行索引也有列索引,其中的数据是以一个或多个二维块存放的,而不是列表、字典或别的一维数据结构。...也可以给某一列赋值一个列表或数组,其长度必须跟DataFrame长度相匹配。如果赋值的是一个Series,则对应的索引位置将被赋值,其他位置的值被赋予空值。...(索引相同的进行算数运算,索引不同的被赋予空值) 4、排序和排名 根据某种条件对数据集进行排序。...Describe既不是约简型也不是累计型,他是用于一次性产生多个汇总统计指标的运算。根据数组中数据的类型不同,产生的统计指标不同,有最值、分位数(四分位、四分之三)、标准差、方差等指标。...9、层次化索引 层次化索引是pandas的一个重要功能,它的作用是使你在一个轴上拥有两个或多个索引级别。相当于Excel中vlookup函数的多条件查找中的多条件。
自然毫无悬念 dataframe:无法访问单个元素,只能返回一列、多列或多行:单值或多值(多个列名组成的列表)访问时按列进行查询,单值访问不存在列名歧义时还可直接用属性符号" ....isin/notin,条件范围查询,即根据特定列值是否存在于指定列表返回相应的结果 where,仍然是执行条件查询,但会返回全部结果,只是将不满足匹配条件的结果赋值为NaN或其他指定值,可用于筛选或屏蔽值...loc和iloc应该理解为是series和dataframe的属性而非函数,应用loc和iloc进行数据访问就是根据属性值访问的过程 另外,在pandas早些版本中,还存在loc和iloc的兼容结构,即...需注意对空值的界定:即None或numpy.nan才算空值,而空字符串、空列表等则不属于空值;类似地,notna和notnull则用于判断是否非空 填充空值,fillna,按一定策略对空值进行填充,如常数填充...、向前/向后填充等,也可通过inplace参数确定是否本地更改 删除空值,dropna,删除存在空值的整行或整列,可通过axis设置,也包括inplace参数 重复值 检测重复值,duplicated,
清洗数据 删除或填充空值 在许多情况下,如果你用 Pandas 来读取大量数据,往往会发现原始数据中会存在不完整的地方。...在 DataFrame 中缺少数据的位置, Pandas 会自动填入一个空值,比如 NaN或 Null 。...因此,我们可以选择用 .dropna() 来丢弃这些自动填充的值,或是用.fillna() 来自动给这些空值填充数据。 比如这个例子: ?...于是我们可以选择只对某些特定的行或者列进行填充。比如只对 'A' 列进行操作,在空值处填入该列的平均值: ? 如上所示,'A' 列的平均值是 2.0,所以第二行的空值被填上了 2.0。...在上面的例子中,数据透视表的某些位置是 NaN 空值,因为在原数据里没有对应的条件下的数据。
,让我们在开发过程中更加得心应手! ?...每个字段的空值情况,数据类型 df.info() # 查看DataFrame的形状 df.shape # 查看DataFrame的列名 df.columns # 查看字段的枚举值数量 df["type...() # 删除所有包含空值的列 df.dropna(axis=1) # 删除全部为空值的列 df.dropna(axis=1, how='all') ## 特殊值替代空值 ## ########...########## # 空值全部填充为0 df.fillna(0) # 修改指定位置的值 df.at[1, "sepal_length"]= 9999 # 用字符串替代空值 df.fillna("...data missing") # 用均值填充 df.fillna(df.mean()) # 用指定列的均值来填充指定列 df["sepal_length"].fillna(df["sepal_length
在计算机编程中,pandas是Python编程语言的用于数据操纵和分析的软件库。特别是,它提供操纵数值表格和时间序列的数据结构和运算操作。...它的名字衍生自术语“面板数据”(panel data),这是计量经济学的数据集术语,它们包括了对同一个体的在多个时期上的观测。...# 至少保留两个非缺失值 data.strip() # 去除列表中的所有空格与换行符号 data.fillna(0) # 将空值填充...({ '语文':100,'数学':100,}) # 不同列填充不同值 data.fillna(method='ffill') # 将空值填充为上一个值 data.fillna...(method='bfill') # 将空值填充下一个值 data.fillna(method='bfill',limit=1) # 将空值填充下一个值,
每个字段的空值情况,数据类型 df.info() # 查看DataFrame的形状 df.shape # 查看DataFrame的列名 df.columns # 查看字段的枚举值数量 df["type...() # 删除所有包含空值的列 df.dropna(axis=1) # 删除全部为空值的列 df.dropna(axis=1, how='all') ## 特殊值替代空值 ## ########...########## # 空值全部填充为0 df.fillna(0) # 修改指定位置的值 df.at[1, "sepal_length"]= 9999 # 用字符串替代空值 df.fillna("...data missing") # 用均值填充 df.fillna(df.mean()) # 用指定列的均值来填充指定列 df["sepal_length"].fillna(df["sepal_length...# 丢弃某列 df.drop("sepal_length", axis=1) # 添加新列 df['new'] = df["sepal_length"]*2 # 条件判断生成新列 df['newcol
在实际的应用中,一般不会按列删除,例如数据中的一列表示年龄,不能因为年龄有缺失值而删除所有年龄数据。 how: how参数默认为any,只要一行(或列)数据中有空值就会删除该行(或列)。...假如空值在第一行或第一列,以及空值前面的值全都是空值,则无法获取到可用的填充值,填充后依然保持空值。...limit: 表示填充执行的次数。如果是按行填充,则填充一行表示执行一次,按列同理。 在缺失值填充时,填充值是自定义的,对于数值型数据,最常用的两种填充值是用该列的均值和众数。...DataFrame的众数也是一个DataFrame数据,众数可能有多个(极限情况下,当数据中没有重复值时,众数就是原DataFrame本身),所以用mode()函数求众数时取第一行用于填充就行了。...在进行数据填充时,可能填充之后还有空值,如用ffill 和 pad填充时,数据第一行就是空值。
df[‘Name’].dtype 某一列格式 df.isnull() 空值 df.isnull() 查看某一列空值 df[Name’].unique() 某一列的唯一值 df.values 数据表的值...df.columns 列名称 df.head() 查看前10行数据 df.tail() 查看后10行数据 数据操作 代码 作用 df.fillna(value=0) 数字0填充空值 df[‘prince...‘city’] == ‘beijing’) & (df_inner[‘price’] >= 4000), ‘sign’]=1 对复合多个条件的数据进行分组标记 pd.DataFrame((x.split...df 中无匹配则为空) df_right=pd.merge(df,df1,how=‘right’) 右连接(以 df1 为基准,df 在 df1 中无匹配则为空) df_outer=pd.merge(df...[i for i in rang(10)], allow_duplicates=True) 在第一列插入名为num的列,值为1…10,允许有重复列
2.2 主键合并数据 主键合并类似于关系型数据库的连接方式,它是指根据个或多个键将不同的 DataFrame对象连接起来,大多数是将两个 DataFrame对象中重叠的列作为合并的键。 ...merge()函数还支持对含有多个重叠列的 Data frame对象进行合并。 使用外连接的方式将 left与right进行合并时,列中相同的数据会重叠,没有数据的位置使用NaN进行填充。 ...2.3 根据行索引合并数据 join()方法能够通过索引或指定列来连接多个DataFrame对象 2.3.1 join()方法 on:名称,用于连接列名。...3.2 轴向旋转 在 Pandas中pivot()方法提供了这样的功能,它会根据给定的行或列索引重新组织一个 DataFrame对象。 ...columns:用于创建新 DataFrame对象的列索引 values:用于填充新 DataFrame对象中的值。 4.
查看数据基本信息 df.info() 使用方式: 提供DataFrame的基本信息,包括每列的非空值数量和数据类型。 示例: 查看数据信息。 df.info() 5....选择特定行和列 df.loc[index, 'ColumnName'] 使用方式: 通过索引标签和列名选择DataFrame中的特定元素。 示例: 选择索引为1的行的“Name”列的值。...填充缺失值 df.fillna(value) 使用方式: 用指定值填充缺失值。 示例: 用均值填充所有缺失值。 df.fillna(df.mean()) 15....使用map函数进行值替换 df['Status'] = df['Status'].map({'Active': 1, 'Inactive': 0}) 使用方式: 使用map函数根据字典或函数替换列中的值...使用mask进行条件替换 df['NewColumn'] = df['Column'].mask(df['Condition']) 使用方式: 使用mask根据条件替换值。
查看数据基本信息 df.info() 使用方式: 提供DataFrame的基本信息,包括每列的非空值数量和数据类型。 示例: 查看数据信息。 df.info() 5....填充缺失值 df.fillna(value) 使用方式: 用指定值填充缺失值。 示例: 用均值填充所有缺失值。 df.fillna(df.mean()) 15....使用map函数进行值替换 df['Status'] = df['Status'].map({'Active': 1, 'Inactive': 0}) 使用方式: 使用map函数根据字典或函数替换列中的值...使用mask进行条件替换 df['NewColumn'] = df['Column'].mask(df['Condition']) 使用方式: 使用mask根据条件替换值。...之后在实际的使用中,就会方便很多。 对于老coder,应该扫一眼就ok了。
] # 根据条件选择数据框中的行和列 df.loc[df['column_name'] > 5, ['column_name1', 'column_name2']] / 04 / 数据清洗 数据清洗是数据预处理阶段的重要步骤...# 检查缺失值 df.isnull() # 删除有缺失值的行 df.dropna() # 用特定值填充缺失值 df.fillna(value) # 插入缺失值 df.interpolate()...# 根据条件过滤行 df_filtered = df[df['column_name'] > 5] # 按单列对DataFrame进行排序 df_sorted = df.sort_values('column_name...')['other_column'].sum().reset_index() / 06 / 加入/合并 在pandas中,你可以使用各种函数基于公共列或索引来连接或组合多个DataFrame。...# 计算某列的最大值 df['column_name'].max() # 计算某列中非空值的数量 df['column_name'].count() # 计算列中某个值的出现次数 df['column_name
日期调整前(为求简便这里用已经剔除分秒,剔除的办法后面在格式一致化的空格分割再详细说) #数据类型转换:字符串转换为日期 #errors='coerce' 如果原始数据不符合日期的格式,转换后的值为空值...python缺失值有3种: 1)Python内置的None值 2)在pandas中,将缺失值表示为NA,表示不可用not available。...axis=1表示逢空值去掉整列 # 'any'如果一行(或一列)里任何一个数据有任何出现Nan就去掉整行, ‘all’一行(或列)每一个数据都是Nan才去掉这整行 DataDF.dropna(how.../pandas.DataFrame.fillna.html#pandas.DataFrame.fillna 1) 用默认值填充- df.fillna(' ') 我们应该去掉那些不友好的 NaN 值。...如果用0或者"Not Given"等来去填充都不太合适,但这个大概的价格是可以根据其他数据估算出来的。
这个例子中,两个DataFrame的行索引和列索引都不相等,将它们按行连接时,先将两个DataFrame的行拼接起来,然后在每行中没有数据的列填充空值。按列连接同理。...根据上面的三个例子(例1~例3),可以总结连接的原理为(按行连接,按列同理): 第一步,将数据按行拼接起来,如果有行索引相等的行,行索引会重复多行。...第二步,检索数据中的列索引,如果列索引相等,则结果兼容显示在同一列(例1),如果列索引不相等,则分别显示,无数据的位置填充空值(例3)。 三连接时取交集 ---- ?...如果取的是交集,修改行索引的过程为:先按取交集的方式连接,然后在结果中增加比修改的索引少的行,增加回的行中填充空值。 五重设结果的索引 ---- ?...当然,添加进去的值在结果中不会显示,因为没有对应的数据,这个功能基本上也不会使用。 ? names: names参数默认为空,多重行索引的命名为None。
SQL中实现条件过滤的关键字是where,在聚合后的条件中则是having,而这在sql DataFrame中也有类似用法,其中filter和where二者功能是一致的:均可实现指定条件过滤。...,当接收列名时则仅当相应列为空时才删除;当接收阈值参数时,则根据各行空值个数是否达到指定阈值进行删除与否 dropDuplicates/drop_duplicates:删除重复行 二者为同名函数,与pandas...中的drop_duplicates函数功能完全一致 fillna:空值填充 与pandas中fillna功能一致,根据特定规则对空值进行填充,也可接收字典参数对各列指定不同填充 fill:广义填充 drop...),第二个参数则为该列取值,可以是常数也可以是根据已有列进行某种运算得到,返回值是一个调整了相应列后的新DataFrame # 根据age列创建一个名为ageNew的新列 df.withColumn('...DataFrame基础上增加或修改一列,并返回新的DataFrame(包括原有其他列),适用于仅创建或修改单列;而select准确的讲是筛选新列,仅仅是在筛选过程中可以通过添加运算或表达式实现创建多个新列
根据需要进行取值,即自定义条件 money_series[money_series > 50] # 选取大于50的值 """ c 300 d 200 Name: money, dtype:...需要注意的是,在访问dataframe时,访问df中某一个具体元素时需要先传入行表索引再确定列索引。 2....# 添加新行 df.append(df2) # 添加新行,使用append 方法即可 # concat 多列连接 # concat函数可以连接多个dataframe数据组成一个更大的dataframe...新的series保留原serie的values值,如果新的index和原series的index不同,则不同的填充NaN值,或者使用fill_value参数指定填充值。...series 中的统计函数 1. sum() 方法 和 mean() 方法 sum 求和函数。mean 求均值,同时有skipnan参数可选是否忽略nan 空值。
combine_first()方法根据DataFrame的行索引和列索引,对比两个DataFrame中相同位置的数据,优先取非空的数据进行合并。...func函数的入参是两个Series,分别来自两个DataFrame(将DataFrame按列遍历),返回结果是一个合并之后的Series,在函数中实现合并的规则。...自定义一个函数first_not_na()在合并时优先取非空的数据,这个函数实现的功能与combine_first(other)方法相同。 四合并时填充空值 ---- ?...fill_value: 先用fill_value填充DataFrame中的空值,再按传入的函数进行合并操作。 fill_value会填充DataFrame中所有列的空值,而且是在合并之前先填充。...overwrite: 如果调用combine()方法的DataFrame中存在的列,在传入combine()方法的DataFrame中不存在,则先在传入的DataFrame中添加一列空值。
(df, end="\n\n") # 修改列 年龄这一列的所有年龄+1 df['Age'] = df['Age'] + 1 print(df, end="\n\n") # 缺失值处理 填充缺失值...) # 删除包含缺失值的列 df_dropped_cols = df.dropna(axis=1) print(df_dropped_cols) # 使用常数填充缺失值 df_filled_constant...) # 使用每列的均值填充缺失值 df_filled_mean = df.fillna(df.mean()) print(df_filled_mean) # 使用每列的中位数填充缺失值 df_filled_median...()) print(df) # 使用线性插值法填充缺失值 df_interpolated = df.interpolate() print(df_interpolated) # 先向前填充,再向后填充...[], DataFrame.iat[] 条件过滤:DataFrame[condition] 「数据操作」: 添加/删除列:DataFrame['new_column'], DataFrame.drop(
在Pandas中,append()方法用于将一个或多个DataFrame或Series添加到DataFrame中。append()方法也可以用于合并操作,本文介绍append()方法的用法。...如果调用append()的DataFrame和传入append()的DataFrame中有不同的列,则添加后会在不存在的列填充空值,这样即使两个DataFrame有不同的列也不影响添加操作。...合并时根据指定的连接列(或行索引)和连接方式来匹配两个DataFrame的行。可以在结果中设置相同列名的后缀和显示连接列是否在两个DataFrame中都存在。...join(): 加入操作,可以在一个DataFrame中加入多个DataFrame,结果都是按列进行合并的。...联合操作是将一个DataFrame中的部分数据用另一个DataFrame中的数据替换或补充,通过一个函数来定义联合时取数据的规则。在联合过程中还可以对空值进行填充。
领取专属 10元无门槛券
手把手带您无忧上云