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

20个能够有效提高 Pandas数据分析效率的常用函数,附带解释和例子

Pandas提供了一个易于使用的函数来计算加和,即cumsum。 如果我们只是简单使用cumsum函数,(A,B,C)组别将被忽略。...对于行标签,如果我们不分配任何特定的索引,pandas默认创建整数索引。因此,行标签是从0开始向上的整数。与iloc一起使用的行位置也是从0开始的整数。...Merge Merge()根据共同列中的值组合dataframe。考虑以下两个数据: ? 我们可以基于列中的共同值合并它们。设置合并条件的参数是“on”参数。 ?...df1和df2是基于column_a列中的共同值进行合并的,merge函数的how参数允许以不同的方式组合dataframe,如:“inner”、“outer”、“left”、“right”等。...例如,我们可以使用pandas dataframes的style属性更改dataframe的样式。

5.7K30

高效的10个Pandas函数,你都用过吗?

Insert Insert用于在DataFrame的指定位置中插入新的数据列。默认情况下新列是添加到末尾的,但可以更改位置参数,将新列添加到任何位置。...Ture表示允许新的列名与已存在的列名重复 接着用前面的df: 在第三列的位置插入新列: #新列的值 new_col = np.random.randn(10) #在第三列位置插入新列,从0开始计算...Cumsum Cumsum是pandas的累加函数,用来求列的累加值。...我们只知道当年度的值value_1、value_2,现在求group分组下的累计值,比如A、2014之前的累计值,可以用cumsum函数来实现。...Where Where用来根据条件替换行或列中的值。如果满足条件,保持原来的值,不满足条件则替换为其他值。默认替换为NaN,也可以指定特殊值。

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

    R语言中的模拟过程和离散化:泊松过程和维纳过程

    我们使用给定时间间隔内跳跃的均匀性,该条件取决于跳跃的次数。 首先,我们可以生成一个可能具有漂移的维纳过程,然后在其旁边,我们可以生成指数定律(这将对应于跳跃之间的时间),还可以生成跳跃幅度 。...cumsum(W)<1) T=cumsum(W[1:N]) X=-rexp(N) 问题是对于维纳过程,我们必须离散化,而对于复合泊松过程,我们不能离散化。...另一种可能性是使用我在引言中提到的泊松过程的均匀性。因为泊松过程满足一个特性:如果是第i个跳跃发生的日期,则有条件基于以下事实: ? ,变量 ? 对应于的订单统计 ?...我们从一个(单个)跳跃开始, ? 即我们找到一个统一的分布函数。然后,我们进行2跳,3跳等迭代。...然后,我们可以进行指数拟合检验, ks.test(VT[-1],"pexp",lambda)$p.value 如果我们重复很多次,则通过更改时间步长(或时间间隔的细分数),实际上,如果时间步长很大(在左下方

    93310

    R语言中的模拟过程和离散化:泊松过程和维纳过程

    我们使用给定时间间隔内跳跃的均匀性,该条件取决于跳跃的次数。 首先,我们可以生成一个可能具有漂移的维纳过程,然后在其旁边,我们可以生成指数定律(这将对应于跳跃之间的时间),还可以生成跳跃幅度 。...这是代码, n=1000h=1/nlambda=5set.seed(2)W=c(0,cumsum(rnorm(n,sd=sqrt(h))))W=rexp(100,lambda)N=sum(cumsum(...因为泊松过程满足一个特性:如果是第i个跳跃发生的日期,则有条件基于以下事实:  ,变量   对应于的订单统计   独立变量,是均匀分布 该属性可在 Wolff(1982)中找到。...我们从一个(单个)跳跃开始, 即我们找到一个统一的分布函数。然后,我们进行2跳,3跳等迭代。...然后,我们可以进行指数拟合检验, ks.test(VT[-1],"pexp",lambda)$p.value 如果我们重复很多次,则通过更改时间步长(或时间间隔的细分数),实际上,如果时间步长很大(在左下方

    2K00

    Pandas,数据处理的好帮手!

    我的理解就是可以进行「行列转换」。 比如下面这样的一个转换。 ? 对名字列进行分类汇总,然后将日期那一列转换到行上,具体代码如下。...下面来看一个全明星球员出场次数的统计。 ? 首先添加num列,然后对name进行分类汇总,然后进行「行累加」。 最后便可得到球员历年的数据情况,避免出现数据缺失的情况,具体代码如下。...'] = df.groupby('name')['num'].transform(pd.Series.cumsum) df.to_csv('test.csv', encoding='utf-8') 「列累加...DataFrame.apply 上面的cumsum函数是逐列进行累加的,如果需要总累加,那么便可以使用apply函数。 代码如下,axis可转换轴。...'date', 'title', 'like', 'coin', 'sum']) # 将字符串转换为时间格式 df['date'] = pd.to_datetime(df['date']) # 时间条件筛选

    98530

    一场pandas与SQL的巅峰大战(五)

    具体来讲,第一篇文章一场pandas与SQL的巅峰大战涉及到数据查看,去重计数,条件选择,合并连接,分组排序等操作。...图中的cum列即是我们想要求的累加值。而所有销售金额的总计值,我们可以直接使用sum求出。...如何能按照月份分组求每组的累计百分比呢? 首先仍然是求累计金额,但要分月累计。在上面的基础上加上月份相等条件即可,从结果中可以看到,在11月和12月cum列是分别累计的。...可以看到,同前面的分组情况一样,在11月和12月cum列是分别累计的。 接下来也很容易就写出分组计算累计百分比的代码,结果和上面也是一致的。...直接对amt列使用cumsum函数即可计算累计值,结果和用SQL计算得到的一致。 计算累计的百分比也很容易。

    2.6K10

    几个高效Pandas函数

    Insert Insert用于在DataFrame的指定位置中插入新的数据列。默认情况下新列是添加到末尾的,但可以更改位置参数,将新列添加到任何位置。...Ture表示允许新的列名与已存在的列名重复 在第三列的位置插入新列: #新列的值 new_col = np.random.randn(10) #在第三列位置插入新列,从0开始计算 df.insert(2...Cumsum Cumsum是pandas的累加函数,用来求列的累加值。...我们只知道当年度的值value_1、value_2,现在求group分组下的累计值,比如A、2014之前的累计值,可以用cumsum函数来实现。...Where Where用来根据条件替换行或列中的值。如果满足条件,保持原来的值,不满足条件则替换为其他值。默认替换为NaN,也可以指定特殊值。

    1.6K60

    Python实战项目——用户消费行为数据分析(三)

    个性化推荐系统:基于用户的消费行为模式和偏好,开发个性化推荐系统,向用户推荐符合其兴趣的产品或服务,提高销售和用户满意度。...matplotlib.pyplot as plt from datetime import datetime %matplotlib inline plt.style.use('ggplot') #更改绘图风格...user_cumsum.apply(lambda x:x['amount_cumsum']/amount_total,axis=1) #前xx名用户的总贡献率 user_cumsum.tail()...用户的生命周期分别在20天内与400至500天间,应该在20天内对客户进行引导,促进其再次消费并形成消费习惯◇延长其生命周期;在100至400天的用户,也要根据其特点推出有针对性的营销活动,引导其持续消费...6..新客户的复购率约为12%,老客户的复购率在20%左右;新客户的回购率在15%左右,老客户的回购率在30%左右,需要营销策略积极引导其再次消费及持续消费。

    1.2K11

    pandas实战:用户消费行为画像

    不活跃户:老客户,在时间窗口内未发生过消费的客户 回流:上个月未消费但本月消费过的客户 为了给每个客户在各观察月打上客户分层标签,需要借助一些辅助列。...pd.to_datetime(pp['order_month']) pp = pp.sort_values(['user_id','order_month'],ascending=[True,True]) # 加工辅助列...'] = pp.groupby(['user_id'])['if_has_order'].transform('cumsum') 然后,生成客户分层的变量user_status,按照不同的条件进行赋值...ua = df.groupby("user_id").order_amount.sum().sort_values().reset_index() ua["amount_cumsum"] = ua.order_amount.cumsum...).dt.days.hist(bins=40,figsize=(10,6)) 大部分客户只消费了一次,开始时间和结束时间都是一样的所以相减为0,因此大部分客户集中在0。

    35010

    技术图文:NumPy 的简单入门教程

    因此,当涉及到数学任务时,它形成了一种基于 Python 的 MATLAB 的快速替代。 计算机中的图像表示为多维数字数组。NumPy 提供了一些优秀的库函数来快速处理图像。...因此,对于2D数组,我们的第一片定义了行的切片,第二片定义了列的切片。 1.3 数组属性 在使用 NumPy 时,你会想知道数组的某些信息。...shape 数组的形状是它有多少行和列,上面的数组有5行和5列,所以它的形状是(5,5)。 itemsize 属性是每个项占用的字节数。...print(a / b) print(a ** 2) print(a < b) print(a > b) print(a.dot(b)) reshape(a, newshape[, order])在不更改数据的情况下为数组赋予新的形状...只需要把条件传递给它,它就会返回一个使得条件为真的元素的列表。

    1.1K40

    LeetCode笔记:Biweekly Contest 85

    解题思路 这一题思路上是比较直接的,就是看连续的k个元素当中有多少个W的元素,遍历所有长度为k的窗口,找到其中的最小值即可。 2....解题思路 这一题一开始觉得能够有什么直接的手段可以直接看出来答案,不过最终还是没有找到这样的方法,也许应该是有的,不过只能说能力限制吧。...解题思路 这一题的思路就是找到每一个元素在经过了一系列shift操作之后的最终移位距离,然后进行一次性变换。 而移位距离的计算,我们用一个累积数组就能够实现,倒是没啥太大的难度。 2....而如何找到这个数,我们只需要使用累积数组和二分搜索就能够大幅的优化执行效率,剩下来唯一的难点就在于边界条件的考察了。 2....(_max, cumsum[idx]-cumsum[0]) bisect.insort(_max, cumsum[s[i+1]]-cumsum[idx+1])

    21120

    Python科学计算:在Numpy的边缘试探(入门学习)

    所以从0开始,每次加12/11. 表示矩阵 #!...dot()函数,是矩阵之间的点积 a的第一行与b的第一列对应的元素相乘的和为新产生的第一个元素,比如第一行的第一个、第二个就是: 0*10 + 1 * 56 + 2 * 4 + 3 * 43 +...当遍历完数组中所有元素则结束,返回值为运行数组的总和的列表。  其实 cumsum() 就是一个累加计算并且保存每次累加的结果,返回值就是包含所有累加结果的一个列表。...,它允许我们根据指定条件获取数组中的元素。...我们用条件式选择了图中不同的点。蓝色的点(也包含图中的绿点,只是绿点覆盖了蓝点),显示的是值大于零的点。绿点显示的是值大于 0 小于 Pi / 2 的点。 缺省索引 && Where函数 #!

    65880

    「Python」用户消费行为分析

    且无空行,其中4列包括user(用户索引列)、date(用户消费时间列)、product(购买产品数量列)、amount(购买总金额列)。...数据的预处理 观察date(用户消费时间列)可发现,其时间格式Pandas未能识别,需要手动将其转换成时间格式列(datetime),方便后续操作。...(by='amount').reset_index() user_cumsum['cumsum_per'] = (user_cumsum['amount'].cumsum() / np.sum(user_cumsum...用户的生命周期分别在20天内与400至500天间,应该在20天内对客户进行引导,促进其再次消费并形成消费习惯,延长其生命周期;在100至400天的用户,也要根据其特点推出有针对性的营销活动,引导其持续消费...5、新客户的复购率约为12%,老客户的复购率在20%左右;新客户的回购率在15%左右,老客户的回购率在30%左右,需要营销策略积极引导其再次消费及持续消费。

    1K10

    气象人开发的高级科学绘图库Proplot!

    如果你满足以下条件,那么Proplot是非常适合你的: •经常绘图,而且包含很多复杂的子图•经常需要对图进行标注和美化•几乎每天都要创建新的图形 Proplot列出了matplotlib的很多不友好的方面...绘制超过1行1列的图形时返回2维数组,1行1列的图形返回1维数组,单个图形则返回Axes实例。...Proplot通过封装进行了更改,尤其方便当所有的子图需要统一参数设置时,非常方便。当然也可以对每个子图进行自定义。...(axis=0).cumsum(axis=1) axs.format(suptitle='Pcolor plot with levels') for ax, n, mode, side in zip(axs...(axis=0).cumsum(axis=1)) % 360 # Cyclic colorbar with distinct end colors ax = axs[0] ax.pcolormesh(

    3.3K52

    LeetCode笔记:Biweekly Contest 31 比赛记录

    解题思路 坦率地说,这题一看就是基于奇偶性的动态规划题目,解法一定是先求解每个元素的前面所有元素的累计值,然后通过分析这些累计值的奇偶性得到最终的答案。...下面,我们给出正确的解法思路如下: 给出list中每一个元素前面所有的元素总和,得到一个cumsum列表; 对上述cumsum列表,分析其中每一个元素的前方所有元素的奇数个数与偶数个数; 对于每一个元素...,我们分情况讨论: 如果到该元素的累计总和为奇数,则以该元素为终点的合法子串数目为cumsum列表中其前方的偶数元素个数; 如果到该元素的累计总和为偶数,则以该元素为终点的合法子串数目为cumsum...下面,废话不多说,直接给出大佬们的解法思路如下: 考察第一列,假设这一列高度为n,则无论如何我们都得通过n次操作来达到这一高度; 考察其后方的每一列的高度: 如果这一列高度低于前一列的高度,那么说明当前一列已经被消除时...,这一列的高度一定是可以通过停在某一次中间过程中达到的; 如果这一列的高度高于前一列的高度,那么假设两者的高度差为m,则我们在通过一系列操作达到了上一列的高度之后,还需要m次额外的操作来达到这一列的高度

    41830

    LeetCode笔记:Weekly Contest 288

    解题思路 这一题思路挺直接的,找到奇偶数出现的位置,然后分别重新排序一下即可。 就是实现上稍微麻烦一点。 2....解题思路 这一题的思路同样也很直接,找到所有可以插入括号的位置然后遍历一下就行。 同样只是实现上多少有些繁琐。 2....解题思路 这一题同样没啥好说的,用二分法找到给定k的情况下能够把较小的数全部尽可能地平均放大的上限即可。 同样是实现比较麻烦,主要就是边界条件需要注意一下。 2....int, target: int, full: int, partial: int) -> int: flowers = sorted(flowers) cumsum =...,从而可以用二分法进行优化加速,不过实现之后发现这个单一峰值的假设是错误的,然后我就没招了,实在想不到什么方法可以优化后面那个遍历……

    21320

    如何有效计算带有条件的求和

    使用NumPyNumPy是Python中的一个科学计算库,它提供了许多用于处理大型数组的高性能函数。您可以使用NumPy的cumsum()和argmax()函数来计算求和和最大值。...data)这种方法是计算带有条件的求和和最大值的最快方法,但它需要您将数据转换为NumPy数组。...这可以大大提高Python代码的执行速度。您可以使用Numba来加速带有条件的求和和最大值的计算。...这可以大大提高Python代码的执行速度。您可以使用Cython来加速带有条件的求和和最大值的计算。...注意事项在选择计算带有条件的求和和最大值的方法时,您需要考虑数据的大小和条件的复杂性。如果数据量较小,您可以使用Python的内置函数sum()和max()。

    5000
    领券