Pandas 包含一些有用的调整,但是:对于一元操作,如取负和三角函数,这些ufunc将保留输出中的索引和列标签,对于二元操作,如加法和乘法,将对象传递给ufunc时,Pandas 将自动对齐索引。...这意味着,保留数据的上下文并组合来自不同来源的数据 - 这两个在原始的 NumPy 数组中可能容易出错的任务 - 对于 Pandas 来说基本上是万无一失的。...2 9.0 3 5.0 dtype: float64 ''' 数据帧中的索引对齐 在DataFrames上执行操作时,列和索引都会发生类似的对齐: A = pd.DataFrame(rng.randint...,无论它们在两个对象中的顺序如何,并且结果中的索引都是有序的。...执行DataFrame和Series之间的操作时,与之相似,索引和列是保持对齐的。
# 再从baseball_15中选取一些列,有相同的、也有不同的 In[45]: df_15 = baseball_15[['AB', 'R', 'H', 'HR']] df_15....# 即便使用了fill_value=0,有些值也会是缺失值,这是因为一些行和列的组合根本不存在输入的数据中 In[47]: df_14.add(df_15, fill_value=0).head(10...从不同的DataFrame追加列 # 读取employee数据,选取'DEPARTMENT', 'BASE_SALARY'这两列 In[48]: employee = pd.read_csv('data...# random_salary中是有重复索引的,employee DataFrame的标签要对应random_salary中的多个标签 In[57]: employee['RANDOM_SALARY'...,用eq方法比较DataFrame的每个值和该列的最大值 In[78]: college_n.eq(college_n.max()).head() Out[78]: ?
数据获取是数据预处理的第一步操作,主要是从不同的渠道中读取数据。...header:表示指定文件中的哪一行数据作为DataFrame类对象的列索引,默认为0,即第一行数据作为列索引。...header:表示指定文件中的哪一行数据作为DataFrame类对象的列索引。 names:表示DataFrame类对象的列索引列表。...缺失值的常见处理方式有三种:删除缺失值、填充缺失值和插补缺失值,pandas中为每种处理方式均提供了相应的方法。...2.1.2 删除缺失值 pandas中提供了删除缺失值的方法dropna(),dropna()方法用于删除缺失值所在的一行或一列数据,并返回一个删除缺失值后的新对象。
loc和iloc应该理解为是series和dataframe的属性而非函数,应用loc和iloc进行数据访问就是根据属性值访问的过程 另外,在pandas早些版本中,还存在loc和iloc的兼容结构,即...检测各行是否重复,返回一个行索引的bool结果,可通过keep参数设置保留第一行/最后一行/无保留,例如keep=first意味着在存在重复的多行时,首行被认为是合法的而可以保留 删除重复值,drop_duplicates...,按行检测并删除重复的记录,也可通过keep参数设置保留项。...对象,功能与python中的普通map函数类似,即对给定序列中的每个值执行相同的映射操作,不同的是series中的map接口的映射方式既可以是一个函数,也可以是一个字典 ?...;sort_values是按值排序,如果是dataframe对象,也可通过axis参数设置排序方向是行还是列,同时根据by参数传入指定的行或者列,可传入多行或多列并分别设置升序降序参数,非常灵活。
keep:删除重复项并保留第一次出现的项取值可以为 first、last或 False duplicated()方法用于标记 Pandas对象的数据是否重复,重复则标记为True,不重复则标记为False...inner:使用两个 DataFrame键的交集,类似SQL的内连接 在使用 merge()函数进行合并时,默认会使用重叠的列索引做为合并键,并采用内连接方式合并数据,即取行索引重叠的部分。 ...数据重塑 3.1 重塑层次化索引 Pandas中重塑层次化索引的操作主要是 stack()方法和 unstack()方法,前者是将数据的列“旋转”为行,后者是将数据的行“旋转”为列。 ...3.2 轴向旋转 在 Pandas中pivot()方法提供了这样的功能,它会根据给定的行或列索引重新组织一个 DataFrame对象。 ...columns:用于创建新 DataFrame对象的列索引 values:用于填充新 DataFrame对象中的值。 4.
这些列是数据帧中包含的新Series对象,具有从原始Series对象复制的值。 可以使用带有列名或列名列表的数组索引器[]访问DataFrame对象中的列。...选择数据帧的列 使用[]运算符选择DataFrame特定列中的数据。 这与Series不同,在Series中,[]指定了行。 可以将[]操作符传递给单个对象或代表要检索的列的对象列表。...这些行为的差异略有不同: del将从DataFrame中删除Series(原地) pop()将同时删除Series并返回Series(也是原地) drop(labels, axis=1)将返回一个已删除列的新数据帧...结果数据帧将由两个列的并集组成,缺少的列数据填充有NaN。 以下内容通过使用与df1相同的索引创建第三个数据帧,但只有一个列的名称不在df1中来说明这一点。...-2e/img/00215.jpeg)] 如果所有DataFrame对象中的列集都不相同,则 Pandas 将用NaN填充这些值。
需要说明的是,在分析演变规律、样本不均衡处理、业务规则等场景中,重复值具有一定的使用价值,需做保留。...缺失值的常见处理方式有三种:删除缺失值、填充缺失值和插补缺失值,pandas中为每种处理方式均提供了相应的方法。...2.1.2 删除缺失值 pandas中提供了删除缺失值的方法dropna(),dropna()方法用于删除缺失值所在的一行或一列数据,并返回一个删除缺失值后的新对象。...| 平均数填充到指定的列 # 计算A列的平均数,并保留一位小数 col_a = np.around(np.mean(na_df['A']), 1) # 计算D列的平均数,并保留一位小数 col_d =...DataFrame.duplicated(subset=None, keep='first') subset:表示识别重复项的列索引或列索引序列,默认标识所有的列索引。
六、索引数据 索引是用于优化查询序列或数据帧中的值的工具。 它们很像关系数据库中的键,但是功能更强大。 它们为多组数据提供了对齐方式,还带有如何处理数据的各种任务(如重采样到不同频率)的语义。...这可能有点违反直觉,但是在逐行的基础上在每列中应用不同的值时,它是非常强大的。...-2e/img/00320.jpeg)] 由算术运算得到的一组列将是序列索引和DataFrame对象的列索引中的标签的并集(根据对齐规则)。...如果要将数据放入实际的DataFrame中,请使用inplace=True参数。 在数学运算中处理 NaN 值 NaN值在 Pandas 中的处理方式与在 NumPy 中的处理方式不同。...请注意,删除重复项时会保留索引。 重复记录可能具有不同的索引标签(在计算重复项时不考虑标签)。 因此,保留的行会影响结果DataFrame对象中的标签集。 默认操作是保留重复项的第一行。
它是一个轻量级的、纯python库,用于生成随机有用的条目(例如姓名、地址、信用卡号码、日期、时间、公司名称、职位名称、车牌号码等),并将它们保存在pandas dataframe对象中、数据库文件中的...2 数据帧操作 在本节中,我将展示一些关于Pandas数据帧的常见问题的提示。 注意:有些方法不直接修改数据帧,而是返回所需的数据帧。...在不知道索引的情况下检索数据: 通常使用大量数据,几乎不可能知道每一行的索引。这个方法可以帮你完成任务。因此,在因此,在“数据”数据框中,我们正在搜索user_id等于1的一行的索引。...填充列缺少的值: 与大多数数据集一样,必须期望大量的空值,这有时会令人恼火。...当然,如果愿意的话,您可以让它们保持原样,但是如果您想添加值来代替空值,您必须首先声明哪些值将被放入哪些属性中(对于其空值)。 所以这里我们有两列,分别称为“标签”和“难度”。
在Pandas中,append()方法用于将一个或多个DataFrame或Series添加到DataFrame中。append()方法也可以用于合并操作,本文介绍append()方法的用法。...如果调用append()的DataFrame和传入append()的DataFrame中有不同的列,则添加后会在不存在的列填充空值,这样即使两个DataFrame有不同的列也不影响添加操作。...即使指定的name值与DataFrame中的行索引重复,也可以添加成功(verify_integrity不为True)。...合并时根据指定的连接列(或行索引)和连接方式来匹配两个DataFrame的行。可以在结果中设置相同列名的后缀和显示连接列是否在两个DataFrame中都存在。...联合操作是将一个DataFrame中的部分数据用另一个DataFrame中的数据替换或补充,通过一个函数来定义联合时取数据的规则。在联合过程中还可以对空值进行填充。
pandas中的 concat() 方法用于将两个或多个 DataFrame 对象沿着行 axis=0 或者列 axis=1 的方向拼接在一起,生成一个新的DataFrame对象。...join='outer'表示取两个 DataFrame 的行列索引的并集进行拼接,缺失值为NaN import pandas as pd df1 = pd.DataFrame({'A': [1, 2]...DataFrame 行索引的并集,缺失值用 NaN 填充。...join='inner' 表示取索引交集,join='outer' 表示取并集。在实际工作中,我们可以根据具体需求选择合适的连接方式。...但有时我们想要在合并后的结果中区分出不同 DataFrame 的来源,从而构造一个多层级索引(hierarchical index),这时就需要用到 keys 参数了。
例如,重量属性在一个系统中采用公制,而在另一个系统中却采用英制;价格属性在不同地点采用不同的货币单位。这些语义的差异为数据集成带来许多问题。...观察上图可知,result是一个3行5列的表格数据,且保留了key列交集部分的数据。...观察上图可知,result是一个4行5列的表格数据,且保留了key列并集部分的数据,由于A、B两列只有3行数据,C、D两列有4行数据,合并后A、B两列没有数据的位置填充为NaN。...没有A、B两个列索引,所以这两列中相应的位置上填充了NaN。...重叠合并数据是一种并不常见的操作,它主要将一组数据的空值填充为另一组数据中对应位置的值。pandas中可使用combine_first()方法实现重叠合并数据的操作。
基础知识在数据分析中就像是九阳神功,熟练的掌握,加以运用,就可以练就深厚的内力,成为绝顶高手自然不在话下! 为了更好地学习数据分析,我对于数据分析中pandas这一模块里面常用的函数进行了总结。...# 某一列的数据类型 data.ndim # 数据维度 data.index # 行索引 data.columns # 列索引 data.values...() # 数据集相关信息概览:索引情况、列数据类型、非空值、内存使用情况 data.describe() # 快速综合统计结果 4....# 默认删除后面出现的重复值,即保留第一次出现的重复值 输出结果: ?...data['origin'].drop_duplicates(keep='last') # 删除前面出现的重复值,即保留最后一次出现的重复值 输出结果: ?
df.dtypes Pandas 为 DataFrame 中的每一列分配适当的数据类型。...df.groupby 要对 DataFrame 进行分组并执行聚合,使用 Pandas 中的 groupby() 方法,如下所示: df = pd.DataFrame([[1, 2, "A"],...: int64 19、数据帧过滤-按标签选择 df.loc 在基于标签的选择中,要求的每个标签都必须在 DataFrame 的索引中。...[]中,不允许使用索引来过滤 DataFrame,如下图: 20、数据帧过滤-按索引选择 df.iloc 以 19 里面的数据帧为例,使用 df.iloc 可以用索引: df.iloc[0] ####...value_counts 要查找列中每个唯一值的频率,请使用 df.value_counts() 方法: df = pd.DataFrame([[1, "A"],
注意,不像 .reset_index() 会保留一个备份,然后才用默认的索引值代替原索引,.set_index() 将会完全覆盖原来的索引值。...清洗数据 删除或填充空值 在许多情况下,如果你用 Pandas 来读取大量数据,往往会发现原始数据中会存在不完整的地方。...在 DataFrame 中缺少数据的位置, Pandas 会自动填入一个空值,比如 NaN或 Null 。...于是我们可以选择只对某些特定的行或者列进行填充。比如只对 'A' 列进行操作,在空值处填入该列的平均值: ? 如上所示,'A' 列的平均值是 2.0,所以第二行的空值被填上了 2.0。...同样,inner 代表交集,Outer 代表并集。 数值处理 查找不重复的值 不重复的值,在一个 DataFrame 里往往是独一无二,与众不同的。找到不重复的值,在数据分析中有助于避免样本偏差。
换句话说,DataFrame看起来很像SAS数据集(或关系表)。下表比较在SAS中发现的pandas组件。 ? 第6章,理解索引中详细地介绍DataFrame和Series索引。...在SAS例子中,我们使用Data Step ARRAYs 类同于 Series。 以创建一个含随机值的Series 开始: ? 注意:索引从0开始。...缺失值的识别 回到DataFrame,我们需要分析所有列的缺失值。Pandas提供四种检测和替换缺失值的方法。...解决缺失数据分析的典型SAS编程方法是,编写一个程序使用计数器变量遍历所有列,并使用IF/THEN测试缺失值。 这可以沿着下面的输出单元格中的示例行。....dropna()方法也适用于列轴。axis = 1和axis = "columns"是等价的。 ? ? 显然,这会丢弃大量的“好”数据。thresh参数允许您指定要为行或列保留的最小非空值。
若未指定数据类型,pandas会根据传入的数据自动推断数据类型。 在使用pandas中的Series数据结构时,可通过pandas点Series调用。...,如出现新的列,值为NaN # index在这里和之前不同,并不能改变原有index,如果指向新的标签,值为NaN (非常重要!)...pandas中使用reindex()方法实现重新索引功能,该方法会参照原有的Series类对象或DataFrame类对象的索引设置数据:若该索引存在于新对象中,则其对应的数据设为原数据,否则填充为缺失值...使用[]访问数据 变量[索引] 需要说明的是,若变量的值是一个Series类对象,则会根据索引获取该对象中对应的单个数据;若变量的值是一个DataFrame类对象,在使用“[索引]”访问数据时会将索引视为列索引...与单层索引相比,分层索引只适用于[]、loc和iloc,且用法大致相同。 使用[]访问数据 由于分层索引的索引层数比单层索引多,在使用[]方式访问数据时,需要根据不同的需求传入不同层级的索引。
Data Analysis) 序列(Series) 数据帧(DataFrame) 重索引 删除条目 索引,选择和过滤 算术和数据对齐 函数应用和映射 排序和排名 带有重复值的轴索引 汇总和计算描述性统计量...isnull() ''' foo False bar False baz False qux True dtype: bool ''' 在算术运算中,Series自动对齐不同的索引数据...每列可以是不同的类型。 DataFrame同时具有行索引和列索引,类似于Series的字典。行和列操作大致是对称实现的。 索引DataFrame时返回的列是底层数据的视图,而不是副本。...将DataFrame中包含的数据作为 2D ndarray返回: df_5.values ''' array([[ nan, 5.2], [ 4.1, nan]]) ''' 如果列是不同的...,则将DataFrame对象相加,会产生行和列的索引对的并集,使不重叠的索引为 NaN: np.random.seed(0) df_8 = DataFrame(np.random.rand(9).reshape
在这两个例子中,按行连接时,两个DataFrame的列索引相同,按列连接时,两个DataFrame的行索引相同,所以结果看起来很直观。 3. 被连接数据的索引不同 ? 连接原理如下。 ?...这个例子中,两个DataFrame的行索引和列索引都不相等,将它们按行连接时,先将两个DataFrame的行拼接起来,然后在每行中没有数据的列填充空值。按列连接同理。...第二步,检索数据中的列索引,如果列索引相等,则结果兼容显示在同一列(例1),如果列索引不相等,则分别显示,无数据的位置填充空值(例3)。 三连接时取交集 ---- ?...如果取的是交集,修改行索引的过程为:先按取交集的方式连接,然后在结果中增加比修改的索引少的行,增加回的行中填充空值。 五重设结果的索引 ---- ?...对不是多重行索引的数据,levels参数不支持,会报错。 当然,添加进去的值在结果中不会显示,因为没有对应的数据,这个功能基本上也不会使用。 ?
combine是联合的意思,在Pandas中,combine()方法也是一种实现合并的方法,本文介绍combine()方法的用法。...combine_first()方法根据DataFrame的行索引和列索引,对比两个DataFrame中相同位置的数据,优先取非空的数据进行合并。...和df2中的数据都为空值,则结果保留df1中的空值(空值有三种: np.nan、None 和 pd.NaT)。...fill_value: 先用fill_value填充DataFrame中的空值,再按传入的函数进行合并操作。 fill_value会填充DataFrame中所有列的空值,而且是在合并之前先填充。...overwrite: 如果调用combine()方法的DataFrame中存在的列,在传入combine()方法的DataFrame中不存在,则先在传入的DataFrame中添加一列空值。
领取专属 10元无门槛券
手把手带您无忧上云