本文将介绍如何使用Python进行数据分类汇总与统计,帮助读者更好地理解和应用数据。 首先,我们需要导入一些常用的Python库,如pandas、numpy和matplotlib等。...第一个阶段,pandas对象中的数据会根据你所提供的一个或多个键被拆分(split)为多组。拆分操作是在对象的特定轴上执行的。...关键技术:任何被当做分组键的函数都会在各个索引值上被调用一次,其返回值就会被用作分组名称。...具体的办法是向agg传入一个从列名映射到函数的字典: 只有将多个函数应用到至少一列时,DataFrame才会拥有层次化的列 2.3.返回不含行索引的聚合数据 到目前为止,所有例中的聚合数据都有由唯一的分组键组成的索引...: 行名称 margins : 总计行/列 normalize:将所有值除以值的总和进行归一化,为True时候显示百分比 dropna :是否刪除缺失值 【例19】根据国籍和用手习惯对这段数据进行统计汇总
,如果希望通过一定的复杂逻辑来分组,比如根据学生体重是否超过总体均值来分组,同样还是计算身高的均值。...,其中字典以列名为键,以聚合字符串或字符串列表为值 gb.agg({'Height':['mean','max'], 'Weight':'count'}) 使用自定义函数 在agg中可以使用具体的自定义函数...47.918519 1 173.62549 72.759259 2 173.62549 72.759259 组索引与过滤 过滤在分组中是对于组的过滤,而索引是对于行的过滤,返回值无论是布尔列表还是元素列表或者位置列表...'new_column',其值为'column1'中每个元素的两倍,当原来的元素大于10的时候,将新列里面的值赋0 import pandas as pd data = {'column1':[1...返回值是row['column1']+row['column2'],所以要按行传入:lambda row apply的自定义函数传入参数与filter完全一致,只不过后者只允许返回布尔值。
('b' in obj2) print('e' in obj2) 如果数据被存放在一个Python的字典中,也可以直接通过这个字典来创建Series: import pandas as pd sdata...另一种常见的数据形式是嵌套字典,如果嵌套字典传给DataFrame, Pandas 就会被解释为:外层字典的键作为列,内层键则作为行索引: import pandas as pd pop1 = {'...键会被合并成结果的行索引,跟“由Series组成的字典”的情况―样 字典或Series的列表 各项将会成为DataFrame的一行。...下表对DataFrame进行了总结: 类型 描述 df[val] 从DataFrame选取单列或一组列;在特殊情况下比较便利:布尔型数组(过滤行)、切片(行切片)、或布尔型DataFrame(根据条件设置值...,将函数应用到由各列或行所形成的一维数组上。
我们将传递一个字典,该字典指示哪些函数将应用于哪些列。...method参数指定如何处理具有相同值的行。first表示根据它们在数组(即列)中的顺序对其进行排名。 21.列中唯一值的数量 使用分类变量时,它很方便。我们可能需要检查唯一类别的数量。...低基数意味着与行数相比,一列具有很少的唯一值。例如,Geography列具有3个唯一值和10000行。 我们可以通过将其数据类型更改为category来节省内存。...29.根据字符串过滤 我们可能需要根据文本数据(例如客户名称)过滤观察结果(行)。我已经将虚构名称添加到df_new DataFrame中。 ? 让我们选择客户名称以Mi开头的行。...endswith函数根据字符串末尾的字符进行相同的过滤。 Pandas可以对字符串进行很多操作。
GroupBy的强大之处在于,它抽象了这些步骤:用户不需要考虑计算如何在背后完成,而是考虑整个操作。 作为一个具体的例子,让我们看看,将 Pandas 用于此图中所示的计算。...DataFrame的groupby()方法计算,传递所需键列的名称: df.groupby('key') # <pandas.core.groupby.DataFrameGroupBy object...A 0 1.5 B 1 2.5 C 2 3.5 另一个有用的方案是传递字典,将列名称映射到要应用于该列的操作: df.groupby('key').aggregate({'data1': 'min',...'data2': 'max'}) data1 data2 key A 0 5 B 1 7 C 2 9 过滤 过滤操作允许你根据分组的属性来删除数据...将索引映射到分组的字典或序列 另一种方法是提供将索引值映射到分组键的字典: df2 = df.set_index('key') mapping = {'A': 'vowel', 'B': 'consonant
key(键)顺序不一样,pandas 会如何处理这种情况呢?...当通过列表字典来创建 DataFrame 时,每个字典通常代表一行数据,字典的键(key)对应列名,而值(value)对应该行该列下的数据。如果每个字典中键的顺序不同,pandas 将如何处理呢?...列顺序:在创建 DataFrame 时,pandas 会检查所有字典中出现的键,并根据这些键首次出现的顺序来确定列的顺序。...df = pd.DataFrame(data, dtype=np.float64):这行代码使用 pandas 的 DataFrame 函数将 data 列表转换为 DataFrame。...输出结果将展示如下: 我们从上面的示例就容易观察到: 生成的 DataFrame 中的列顺序遵循了首次出现键的顺序。
如果传入的是一个字典,则 map() 函数将会使用字典中键对应的值来替换 Series 中的元素。如果传入的是一个函数,则 map() 函数将会使用该函数对 Series 中的每个元素进行转换。...定义了填充空值的方法, pad / ffill表示用前面行/列的值,填充当前行/列的空值; backfill / bfill表示用后面行/列的值,填充当前行/列的空值。axis:轴。...0或’index’,表示按行删除;1或’columns’,表示按列删除。inplace:是否原地替换。布尔值,默认为False。如果为True,则在原DataFrame上进行操作,返回值为None。...和right_on来指定left_on:左表的连接键字段right_on:右表的连接键字段left_index:为True时将左表的索引作为连接键,默认为Falseright_index:为True时将右表的索引作为连接键...函数根据 'A' 列合并两个 DataFramemerged_df = pd.merge(df1, df2, on='A')print("合并后的 DataFrame:")print(merged_df
the rows into the columns(行索引变为列取值) 两个函数默认都从最低level开始操作,然后将转换为另外一个轴的最低层级,可以传入 df 的层级名称或者数字来强制修改操作层级,...):根据 to_match 的情况返回一个对 list 的索引,值为 list 的索引值 分组 Pandas 提供了 DataFrame.groupby()方法,按照指定的分组键,将具有相同键值的记录划分为同一组...随机抽样 随机抽样用到的是 df.sample(n)函数,该函数返回值为对于 df 以行为抽样单位进行的随机抽样,返回值是从总体随机抽出的 n 行组成的 df(默认不可以重复,可以调整参数) import...) 缺失值补充 df.isnull().T.any() == True返回缺失值所在行的索引 也可以使用 pandas.DataFrame.fillna()方法进行常量填补() 输入字典来指定每一列的填补值...传入一个函数名组成的列表,则会将每一个函数的函数名作为返回值的列名,如果不希望使用函数名作为列名,可以将列表中的元素写成类似’(column_name,function)'的元组形式来指定列名为name
例如,DataFrame可以在其行(axis=0)或列(axis=1)上进行分组。然后,将一个函数应用(apply)到各个分组并产生一个新值。...这里最重要的是,数据(Series)根据分组键进行了聚合,产生了一个新的Series,其索引为key1列中的唯一值。...', 'e': 'red', 'f' : 'orange'} 现在,你可以将这个字典传给groupby,来构造数组,但我们可以直接传递字典(我包含了键“f”来强调,存在未使用的分组键是可以的): In...任何被当做分组键的函数都会在各个索引值上被调用一次,其返回值就会被用作分组名称。具体点说,以上一小节的示例DataFrame为例,其索引值为人的名字。...它根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中。
使用 NumPy 函数或类似 NumPy 的运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引值的链接,代码示例: obj2*2 np.exp(obj2) 还可以将 Series...DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共用同一个索引)。DataFrame 中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。...另一种常见的数据形式是嵌套字典,如果嵌套字典传给 DataFrame,pandas 就会被解释为:外层字典的键作为列,内层键则作为行索引,代码示例: #DataFrame另一种常见的数据形式是嵌套字典...03-26 4 5 6 7 2019-03-27 8 9 10 11 ''' # 根据标签选择数据 # 获取特定行或列 # 指定行数据 print(df.loc['2019-03-25...['20190326', 'A']) ''' 4 ''' # 根据序列iloc获取特定位置的值, iloc是根据行数与列数来索引的 print(df.iloc[1,0]) # 13, numpy
本文的Pandas知识点包括: 1、合并数据集 2、重塑和轴向旋转 3、数据转换 4、数据聚合 1、合并数据集 Pandas中合并数据集有多种方式,这里我们来逐一介绍 1.1 数据库风格合并 数据库风格的合并指根据索引或某一列的值是否相等进行合并的方式...2、重塑和轴向旋转 在重塑和轴向旋转中,有两个重要的函数,二者互为逆操作: stack:将数据的列旋转为行 unstack:将数据的行旋转为列 先来看下面的例子: data = pd.DataFrame...我们使用unstack()将数据的列旋转为行,默认是最里层的行索引: result.unstack() ?...,则会根据数据的最大值和最小值自动计算等长面元,比如下面的例子将均匀分布的数据分为四组: data = np.random.rand(20) pd.cut(data,4,precision=2) pandas...4.3 数据透视表 透视表是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具,它根据一个或多个键对数据进行聚合,并根据行和列伤的分组键将数据分配到各个矩形区域中。
数据规整化:合并、清理、过滤 pandas和python标准库提供了一整套高级、灵活的、高效的核心函数和算法将数据规整化为你想要的形式!...’、‘left’、‘right’ on 用于连接的列名,必须同时存在于左右两个DataFrame对象中,如果位指定,则以left和right列名的交集作为连接键 left_on 左侧DataFarme中用作连接键的列...right_on 右侧DataFarme中用作连接键的列 left_index 将左侧的行索引用作其连接键 right_index 将右侧的行索引用作其连接键 sort 根据连接键对合并后的数据进行排序...默认总是赋值 1、多对一的合并(一个表的连接键列有重复值,另一个表中的连接键没有重复值) import pandas as pd import numpy as np df1 = pd.DataFrame...),可以是任意值的列表或数组、元组数据、数组列表(如果将levels设置成多级数组的话) levels 指定用作层次化索引各级别(内层索引)上的索引,如果设置keys的话 names 用于创建分层级别的名称
本篇博客将从零开始,带你学习如何使用 pandas 和 xlrd 来读取、处理、修改和保存 Excel 文件的数据。我们将详细讲解每一步,并附带代码示例和输出结果。...df = pd.DataFrame(data) # 显示 DataFrame print(df) 解释 字典 data:我们创建了一个字典,其中每个键(如 'Name')代表一列数据,每个键对应的值是一个列表...pd.DataFrame(data):pandas 提供的 DataFrame 构造函数,用于将字典转换为 DataFrame。...8.2 处理缺失数据 缺失值 是指在数据集中某些字段没有数据,这是常见的问题。我们可以选择删除包含缺失值的行,或者用其他值来填补缺失值。...删除包含缺失值的行: df.dropna():删除包含任何缺失值的行,返回一个新的 DataFrame。
数据分组就是根据一个或多个键(可以是函数、数组或df列名)将数据分成若干组,然后对分组后的数据分别进行汇总计算,并将汇总计算后的结果合并,被用作汇总计算的函数称为就聚合函数。...1.分组键是列名 分组键是列名时直接将某一列或多列的列名传给 groupby() 方法,groupby() 方法就会按照这一列或多列进行分组。...groupby(): """ 功能: 根据分组键将数据分成若干组。...返回值: 注意返回的是**DataFrameGroupBy对象**,而不是一个DataFrame对象。...② 针对不同的列做不同的汇总运算:字典形式,*键名*是*列名*,*键值*是*汇总方式*字符串形式。 返回值: 一个DataFrame对象。
如果我们想要有多个列,我们使用 data frames。下面的例子展示了pandas数据框架。 DataFrame 是行和列的集合。...请看下面的表格,它比上面的例子有更多的表列: 接下来,我们将了解如何导入pandas,以及如何使用pandas创建 Series 和 dataframe 引入 Pandas import pandas...David UK London 2 John Sweden Stockholm 如果想向DataFrame中添加列,可以像向字典中添加键一样操作。...接下来让我们看下如何改变值。...获取最后5行数据 获得标题,数据作为一个pandas series返回 计算这个dataframe的行和列个数 过滤包含python的标题 过滤包含JavaScript的标题 尝试对数据做一些增改计算格式化等操作
index 和 columns 属性来访问: 注意 当传递一组特定列以及数据字典时,传递的列将覆盖字典中的键。...pandas 知道如何将一个ExtensionArray存储在Series或DataFrame的列中。更多信息请参见 dtypes。...index和columns属性来访问: 注意 当与数据字典一起传递了特定列集时,传递的列将覆盖字典中的键。...如果有任何嵌套的字典,这些将首先转换为 Series。如果未传递任何列,则列将是字典键的有序列表。...它的操作类似于DataFrame构造函数,除了默认情况下是'columns'的orient参数,但可以设置为'index'以将字典键用作行标签。
Query Query是pandas的过滤查询函数,使用布尔表达式来查询DataFrame的列,就是说按照列的规则进行过滤操作。...Where Where用来根据条件替换行或列中的值。如果满足条件,保持原来的值,不满足条件则替换为其他值。默认替换为NaN,也可以指定特殊值。...,否则替换为other other:替换的特殊值 inplace:inplace为真则在原数据上操作,为False则在原数据的copy上操作 axis:行或列 将df中列value_1里小于5的值替换为...Isin Isin也是一种过滤方法,用于查看某列中是否包含某个字符串,返回值为布尔Series,来表明每一行的情况。...简单说就是将指定的列放到铺开放到行上变成两列,类别是variable(可指定)列,值是value(可指定)列。
合并数据集 pandas.merge可根据一个或者多个不同DataFrame中的行连接起来。 pandas.concat可以沿着一条轴将多个对象堆叠到一起。...数据风格的DataFrame合并操作 2.1 数据集的合并(merge)或连接(jion)运算时通过一个或多个键将行链接起来的。如果没有指定,merge就会将重叠列的列名当做键,最好显示指定一下。...pd.merge(df1,df2,on='key') 2.2 默认情况下,merge做的是"inner"连接,结果中的键是交集。其他方式有“left”、“right”、“outer”。...4.1 重塑层次化索引 层次化索引为DataFrame数据的重排任务提供了良好的一致性方式。主要两种功能: stack:将数据的列“旋转”为行。...unstack:将数据的行“旋转”为列。 5. 数据转换 5.1 利用函数或映射进行数据转换 Series的map方法可以接受一个函数或含有映射关系的字典型对象。
如果未传递且left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。 left_on:左侧DataFrame中的列或索引级别用作键。...可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。 right_on: 左侧DataFrame中的列或索引级别用作键。...outer’取并集,出现的A会进行一一匹配,没有同时出现的会将缺失的部分添加缺失值。 sort: 按字典顺序通过连接键对结果DataFrame进行排序。...indicator:将一列添加到名为_merge的输出DataFrame,其中包含有关每行源的信息。..._merge是分类类型,并且对于其合并键仅出现在“左”DataFrame中的观察值,取得值为left_only,对于其合并键仅出现在“右”DataFrame中的观察值为right_only,并且如果在两者中都找到观察点的合并键
领取专属 10元无门槛券
手把手带您无忧上云