首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

七步搞定一个综合案例,掌握pandas进阶用法!

各组内按销售数量(或百分比)做降序。这里的排序有两个层次的含义,第一种是组内实际顺序不变,只给一个排序编号。代码如下所示,method=first是保证序号是连续且唯一的。...其中累计到第二行的时候已经达到了61.1%,超过了50%,因此最终只需取前两行即可。 5.目标筛选 经过了前面的数据准备,在这一步需要在每组内,筛选累计值达到50%的行,且最多三行。...可以看出,该组内最初有5行数据,筛选后剩下两行,且销售量占比超过50%,至此需求已基本实现。...6.分组拼接 在上一步筛选出了目标行,未达到最终目标,还需将每个分组内所有符合条件的产品名称拼接起来,并用逗号隔开。这里采用分组对字符串求和的方式来实现。...涉及到的操作依次有:数据读取,列名修改,字段分割,列子集筛选;分组求和(transform);分组排序(编号),分组排序;累计求和;按行迭代,数据拼接,条件筛选,分组拼接,apply/lambda函数;

2.7K40

Pandas_Study02

dropna() 删除NaN 值 可以通过 dropna 方法,默认按行扫描(操作),会将每一行有NaN 值的那一行删除,同时默认是对原对象的副本操作,不会对原对象产生影响,也可以通过inplace 指示是否直接在原对象上操作...df.fillna(0,inplace = True) # inplace 指明在原对象上直接修改 复杂的 使用向前 或 向后 填充数据,依旧使用fillna 方法,所谓向前 是指 取出现NaN值的前一列或前一行的数据来填充...x) 对dataframe 使用apply # 对df 使用apply,都是按行或按列操作,不能保证对每一个元素进行操作 df = pd.DataFrame(val, index=idx, columns...=col) # 按行操作,对数据求和 print(type(df.apply(lambda col: col.sum(), axis='rows'))) # 按列操作,对数据求和 print(df.apply...:", n, "\n|",g,"|" # 查看组名和 每组的数据信息 for n,_ in dg: print "group_name:", n, "\n|",dg.get_group(n),

20510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【数据处理包Pandas】DataFrame数据选择的基本方法

    head():认获取前 5 行 head(n):获取前 n 行 tail():默认获取后 5 行 tail(n):获取后 n 行 sample(n):随机抽取 n 行显示 df.head(10) (三)...对 DataFrame df2中的每一行,从 ‘Q1’ 到 ‘Q4’ 列的值进行求和: df2.apply(lambda x:sum(x['Q1':'Q4']),axis=1) # 一次处理一行 使用了...其中lambda x: sum(x['Q1':'Q4'])表示对每一行从 ‘Q1’ 到 ‘Q4’ 列进行求和操作。而axis=1参数指定了按行操作。...因此,该代码将会对 DataFrame df2中的每一行,从 ‘Q1’ 到 ‘Q4’ 列的值进行求和,并返回一个包含每一行求和结果的 Series。...,然后对每个分组中的 ‘Q1’ 和 ‘Q4’ 列应用了max()函数,以找到每个组中 ‘Q1’ 和 ‘Q4’ 列的最大值。

    8400

    用 Pandas 进行数据处理系列 二

    获取指定的列和行 import pandas as pd df = pd.read_csv('xxxx.xls') 获取行操作df.loc[3:6]获取列操作df['rowname']取两列df[['...()重设索引df=df.set_index(‘date’)设置 date 为索引df[:‘2013’]提取 2013 之前的所有数据df.iloc[:3,:2]从 0 位置开始,前三行,前两列,这里的数据不同去是索引的标签名称...,而是数据所有的位置df.iloc[[0,2,5],[4,5]]提取第 0、2、5 行,第 4、5 列的数据df.ix[:‘2013’,:4]提取 2013 之前,前四列数据df[‘city’].isin...,并生成数据表 数据筛选 使用与、或、非三个条件配合大于、小于、等于对数据进行筛选,并进行计数和求和。...'age']].sort( ['id']).city.count() 使用 query 函数进行筛选 df.query('city' == ['beijing', 'shanghai']) 对筛选后的结果按

    8.2K30

    Python数据分析笔记——Numpy、Pandas库

    Pandas库 Pandas数据结构 1、Series (1)概念: Series是一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据标签(即索引)组成。...当我们没有为数据指定索引时,Series会自动创建一个0到N-1(N为数据的长度)的整数型索引。可以通过Series的values和index属性获取其数组的值和对应的属性。...(3)获取DataFrame的值(行或列) 通过查找columns值获取对应的列。(下面两种方法) 通过索引字段ix查找相应的行。 (4)对列进行赋值处理。 对某一列可以赋一个标量值也可以是一组值。...Pandas基本功能 1、重新索引 Pandas对象的一个方法就是重新索引(reindex),其作用是创建一个新的索引,pandas对象将按这个新索引进行排序。对于不存在的索引值,引入缺失值。...其中有求和(sum)运算、累计(cumsum)运算、平均值(mean)等运算。这些运算默认都是针对于行的运算,通过使用axis=1进行列的运算。

    6.4K80

    Pandas速查卡-Python数据科学

    如果你对pandas的学习很感兴趣,你可以参考我们的pandas教程指导博客(http://www.dataquest.io/blog/pandas-python-tutorial/),里面包含两大部分的内容...数据框的前n行 df.tail(n) 数据框的后n行 df.shape() 行数和列数 df.info() 索引,数据类型和内存信息 df.describe() 数值列的汇总统计信息 s.value_counts...df[(df[col] > 0.5) & (1.7)] 0.7> col> 0.5的行 df.sort_values(col1) 将col1按升序对值排序 df.sort_values(col2,ascending...=False) 将col2按降序对值排序 df.sort_values([col1,ascending=[True,False]) 将col1按升序排序,然后按降序排序col2 df.groupby(col...) 从一列返回一组对象的值 df.groupby([col1,col2]) 从多列返回一组对象的值 df.groupby(col1)[col2] 返回col2中的值的平均值,按col1中的值分组(平均值可以用统计部分中的几乎任何函数替换

    9.2K80

    pandas用法-全网最详细教程

    1、首先导入pandas库,一般都会用到numpy库,所以我们先导入备用: import numpy as np import pandas as pd 2、导入CSV或者xlsx文件: df = pd.DataFrame...行数据、后5行数据: df.head() #默认前5行数据 df.tail() #默认后5行数据 三、数据表清洗 1、用数字0填充空值: df.fillna(value=0) 2、使用列prince...[:3,:2] #冒号前后的数字不再是索引的标签名称,而是数据所在的位置,从0开始,前三行,前两列。...7、适应iloc按位置单独提起数据 df_inner.iloc[[0,2,5],[4,5]] #提取第0、2、5行,4、5列 8、使用ix按索引标签和位置混合提取数据 df_inner.ix[:'2013...1、对所有的列进行计数汇总 df_inner.groupby('city').count() 2、按城市对id字段进行计数 df_inner.groupby('city')['id'].count()

    7.3K31

    Python数据分析作业二:Pandas库的使用

    其中,Series 和 DataFrame 是 Pandas 中最常用的两个对象,分别对应于一维和二维数据的处理(Pandas 还有对三维甚至多维数据处理的 Panel 对象,但不太常用)。...8、对dff中的交易额平均值进行降序排列 dff.sort_values(ascending=False) 9、使用df中的数据按类别统计每个人的交易总额 df.pivot_table(index='姓名...在这个例子中,使用的聚合函数是'sum',表示对 “交易额” 进行求和。...然后,使用.sum()方法两次对这个布尔值的 DataFrame 进行求和,第一次对每列求和,第二次对每行的结果再求和。...最后,使用groupby方法将合并后的 DataFrame 按照 “姓名” 和 “职级” 进行分组,并计算每个组中 “交易额” 列的总和。

    10200

    python数据分析——数据的选择和运算

    ,逗号前选择行,逗号后选择列。...关键技术: 二维数组索引语法总结如下: [对行进行切片,对列的切片] 对行的切片:可以有start:stop:step 对列的切片:可以有start:stop:step import pandas...关键技术:对于例子给定的DataFrame数据,按行进行求和并输出结果。...可以采用求和函数sum(),设置参数axis为0,则表示按纵轴元素求和,设置参数axis为1,则表示按横轴元素求和,程序代码如下所示: 均值运算 在Python中通过调用DataFrame对象的mean...关键技术: mean()函数能够对对数据的元素求算术平均值并返回,程序代码如下所示: 中位数运算 中位数又叫作中值,按顺序排列的一组数据中位于中间位置的数,其不受异常值的影响。

    19310

    系统性的学会 Pandas, 看这一篇就够了!

    如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。 columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。...填入参数N则显示前N行 data.head(5) 结果: (7)tail(5):显示后5行内容 如果不补充参数,默认5行。...填入参数N则显示后N行 data.tail(5) 结果: (3)DatatFrame索引的设置 现在要将下图的行索引改变,变成下下图所示样子,怎么做呢?...以上这些函数可以对series和dataframe操作,这里我们按照时间的从前往后来进行累计 排序 # 排序之后,进行累计求和 data = data.sort_index() 对p_change进行求和...8.2 pd.merge pd.merge(left, right, how='inner', on=None) 可以指定按照两组数据的共同键值对合并或者左右各自 left: DataFrame right

    4.6K30

    系统性的学会 Pandas, 看这一篇就够了!

    如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。 columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。...填入参数N则显示前N行 data.head(5) 结果: (7)tail(5):显示后5行内容 如果不补充参数,默认5行。...填入参数N则显示后N行 data.tail(5) 结果: (3)DatatFrame索引的设置 现在要将下图的行索引改变,变成下下图所示样子,怎么做呢?...以上这些函数可以对series和dataframe操作,这里我们按照时间的从前往后来进行累计 排序 # 排序之后,进行累计求和 data = data.sort_index() 对p_change进行求和...8.2 pd.merge pd.merge(left, right, how='inner', on=None) 可以指定按照两组数据的共同键值对合并或者左右各自 left: DataFrame right

    4.1K20

    系统性的学会 Pandas, 看这一篇就够了!

    如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。 columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。...填入参数N则显示前N行 data.head(5) 结果: (7)tail(5):显示后5行内容 如果不补充参数,默认5行。...填入参数N则显示后N行 data.tail(5) 结果: (3)DatatFrame索引的设置 现在要将下图的行索引改变,变成下下图所示样子,怎么做呢?...以上这些函数可以对series和dataframe操作,这里我们按照时间的从前往后来进行累计 排序 # 排序之后,进行累计求和 data = data.sort_index() 对p_change进行求和...8.2 pd.merge pd.merge(left, right, how='inner', on=None) 可以指定按照两组数据的共同键值对合并或者左右各自 left: DataFrame right

    4.4K40

    系统性总结了 Pandas 所有知识点

    如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。 columns:列标签。如果没有传入索引参数,则默认会自动创建一个从0-N的整数索引。...填入参数N则显示前N行 data.head(5) 结果: (7)tail(5):显示后5行内容 如果不补充参数,默认5行。...填入参数N则显示后N行 data.tail(5) 结果: 3、DatatFrame索引的设置 现在要将下图的行索引改变,变成下下图所示样子,怎么做呢?...以上这些函数可以对series和dataframe操作,这里我们按照时间的从前往后来进行累计 排序 # 排序之后,进行累计求和 data = data.sort_index() 对p_change进行求和...8.2 pd.merge pd.merge(left, right, how='inner', on=None) 可以指定按照两组数据的共同键值对合并或者左右各自 left: DataFrame right

    3.3K20
    领券