- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个看起来像这样的 df:
visits ={'someID':[111,111,111,222,222,222,333,333],
'Month':[1,3,5,1,2,4,3,4],
'visits':[4,10,5,2,2,2,5,5]}
df = pd.DataFrame.from_dict(visits)
someID Month Visits
111 1 4
111 3 10
111 5 5
222 1 2
222 2 2
222 4 2
333 3 5
333 4 5
数据框应解释为:
用户 111 在第 1 个月访问但在第 2 个月流失并在第 3 个月返回,在第 4 个月流失并在第 5 个月返回。用户 222 在第 1 个月和第 2 个月访问过,在第 3 个月流失并在第 4 个月返回用户 333 在第 3 个月首次访问(他不应在第 1 个月和第 2 个月显示为流失)。
汇总每月流失次数和每月新访问次数的有效方法是什么?churn = 之前访问过但当月没有访问过新访问 = 第一次访问
期望的输出:(
Month Churns New_visits Totals
2 1 0 1
3 1 1 2
4 1 0 2
5 2 0 1
最佳答案
此解决方案是 hackish 且未优化,但它可能足够快地满足您的目的。
首先,使用 pivot_table
计算每个用户 ID 每月的出现情况:
df2 = df.pivot_table(columns='someID',
index='Month',
values='visits',
aggfunc='count')
# df2:
# someID 111 222 333
# Month
# 1 1.0 1.0 NaN
# 2 NaN 1.0 NaN
# 3 1.0 NaN 1.0
# 4 NaN 1.0 1.0
# 5 1.0 NaN NaN
创建一个由月份编号索引的空 DataFrame,准备接收整数计数:
result = pd.DataFrame(data=np.zeros(df2.shape[0]),
index=df2.index,
columns=['New_visits'],
dtype=np.int16)
在第一个数据透视表 DataFrame 中,用非 NaN 标记值标记每个用户首次访问之前的每个月,例如 -1。使用每个用户的first_valid_index
来统计每个月的新访问者数量:
for col in df2:
fvi = df2[col].first_valid_index()
df2.loc[df2[col].index < fvi, col] = -1
result.loc[fvi, 'New_visits'] += 1
# df2
# someID 111 222 333
# Month
# 1 1.0 1.0 -1.0
# 2 NaN 1.0 -1.0
# 3 1.0 NaN 1.0
# 4 NaN 1.0 1.0
# 5 1.0 NaN NaN
对于每一行,将每个 NaN 计为流失,将每个正值计为访客:
result['Churns'] = df2.isnull().sum(axis=1)
result['Totals'] = df2.gt(0).sum(axis=1)
# result
# New_visits Churns Totals
# Month
# 1 2 0 2
# 2 0 1 1
# 3 1 1 2
# 4 0 1 2
# 5 0 2 1
关于python - 标记和总结访问日志中每月的差距(流失),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46893307/
我无法消除 IE7 中列表项之间的差距。 HTML: row 1.1
我用 jquery mobile 开发了一个 Phonegap 应用程序。它是一个单页应用程序,具有固定的页眉、固定的页脚和从左侧打开的面板。内容 DIV 为白色,面板从其默认颜色加载。 问题是当面板
我在我当前的元素中使用了 bootstrap,它工作正常但只有一个故障: 我有 3 col-sm-6彼此相邻,当第二个col-sm-6比第一、第三长col-sm-6向左移动,第一个和第三个之间出现间隙
我目前正在创建一个网站。但是,我在缩小页面最右侧的边距差距时遇到了一些问题 As seen in this picture我尝试将 body 设置为 margin 0px,但这没有帮助。任何帮助都将不
我的 OpenLayers map 有问题。我无法让瓷砖一 block 挨着另一 block 。我已经检查过侵入式 CSS,但没有找到任何东西。有人可以帮我解决这个问题吗? 我目前的代码是这样的:
我在制作 时遇到了问题我页面的标题链接展开以填满整个 在我的网页中标记。下面似乎有一个缺口,我不知道如何修复它。 我的导航栏也有类似的问题,随着我增加浏览器的大小,它不断扩展。 尝试将鼠标悬停在这个
当使用 Xcode 11 beta 5 在 iOS 13 beta 6 上运行应用程序时,我在呈现搜索结果 View Controller 时遇到了奇怪的间隙: 以下是如何设置的一些内容: let s
(PostgreSQL 8.4) 继续我的 previous example ,我希望通过窗口函数进一步理解间隙和孤岛处理。考虑下表和数据: CREATE TABLE T1 ( id SERIAL
我正在开发 PWA 网站。必须通过单击主屏幕图标来启动应用程序。问题是将 iPhone 旋转到横向位置后出现 20px 间隙。这个间隙超出了 Window 对象,所以我无法用 js 或 css 处理它
我注意到当位置设置为绝对时,表格单元格垂直对齐不起作用。我做错了什么吗? 非工作 sample bottom alignament is
我尝试添加各种标签并尝试添加相对路径:'//' 这些是我尝试过的各种meta标签 我也尝试过为相对路径添加“//”。 execIframe.contentWindow.location
我有一个 CSS 嵌套菜单在 IE 8 和 Firefox 中完美运行,但在 IE7 中它会在元素之间产生一个小间隙。这是我的 CSS: #nav, #nav ul { margin: 0;
我正在尝试使用 SwiftUI 在 HStack 中有两个 View 。但是,我一直在两种观点之间存在差距。 该问题出现在纵向和横向布局中。 我的代码: struct ContentView: Vie
我的 svg 左侧有一个小缝隙,我一辈子都无法修复它。请参阅下图了解我所指的内容。在左侧,您可以稍微看到图像。 我在 Chrome 和 Firefox 上注意到这个问题。知道问题可能是什么吗? .aw
当我在 Visual Studio 2010 中创建一个全新的 ATL 项目时,资源 ID 102 和 105 被遗漏了。这是故意的还是错误?这些 ID 在项目后期有什么用吗?我可以重新排序编号以使用
我使用 JQuery Mobile+Phone Gap 实现了 TableView A Adam Kinkaid Alex Wickerham Avery Johnson B
我是一名优秀的程序员,十分优秀!