利用pandas进行欧洲空气质量监测 利用pandas进行数据分析
本文介绍如何使用 Pandas分析客户交付数据,提取并统计特定客户链的出现频率。通过对数据进行排序、去重和分组聚合,最终得到不同客户链出现其次数或比例,帮助你发现潜在的交付模式。
在实际业务场景中,我们经常需要分析客户的购买行为、访问路径或交付顺序等数据,从而发现隐藏的模式和规律。本文以客户交付数据为例,演示如何使用Pandas提取并统计客户链,帮助你更好地理解客户行为。
数据准备
首先,我们需要准备包含交付数据的 Pandas DataFrame。DataFrame 至少包含以下几列:DateTime: 交付时间 SortieNumber: 批次号CustomerName: 客户产品代码: 产品代码
以下是一个示例 DataFrame:import pandas as pddata = {'DateTime' 名称: ['01/01/2023 09:00:00', '2023年1月1日 09:10:00', '2023年1月1日 09:15:00', '2023年1月1日 12:00:00', '2023年1月1日 12:00:10', '2023年1月1日 12:15:00', '2023年1月1日 15:00:00', '2023年1月1日 15:05:10', '2023年1月1日 15:15:00', '2023年1月1日 15:30:10', '2023年1月1日 15:35:15'], '出击编号': [1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3], '客户名称': ['乔什', '爱丽丝', '罗伯特', '安娜', '安娜', '罗伯特', '乔什', '爱丽丝', '罗伯特', '罗伯特', '罗伯特'], '产品代码': ['001', '002', '002', '001', '003', '003', '004', '003', '001', '002', '003']}df = pd.DataFrame(data)print(df)登录后复制
数据处理
接下来,我们需要对DataFrame进行处理,提取客户链并统计其出现频率。
排序: 首先,按照 SortieNumber 和 DateTime 对 DataFrame 进行排序,确保同一批次内的客户按照交付时间顺序排列。df = df.sort_values(by=['SortieNumber', 'DateTime'])print(df)登录后复制
去重:删除同一批次内的连续重复的 CustomerName。如果在一次批次中,同一客户连续出现多个,我们只保留第一次出现。
df = df.loc[lambda d: d[['SortieNumber', 'CustomerName']].ne(d[['SortieNumber', 'CustomerName']].shift()).any(axis=1)]#或者,如果确定同一个SortieNumber中,同一个客户不会被其他客户分割,可以使用更简洁的方法:# df = df.drop_duplicates(['SortieNumber', 'CustomerName'])print(df)登录后复制
分组聚合:按照SortieNumber对DataFrame进行分组,把每个分组内的客户名称用“-”连接起来,形成客户链。customer_chains = df.groupby('SortieNumber')['CustomerName'].agg('-'.join)print(customer_chains)登录后复制
统计频率:使用 value_counts() 函数统计每个客户链出现的次数。chain_counts = customer_chains.value_counts()print(chain_counts)登录后复制
结果展示
最终,我们得到每个客户链出现的次数。例如,Josh-Alice-Robert 出现了 2 次,Anna-Robert 出现了 1 次。
如果需要显示将正常化=True 提交给value_counts() 函数。
chain_proportions = customer_chains.value_counts(normalize=True)print(chain_proportions)登录后复制
完整代码
以下是完整的代码示例:import pandas as pddata = {'DateTime': ['01/01/2023 09:00:00', '01/01/2023 09:10:00', '01/01/2023 09:15:00', '01/01/2023 12:00:00', '01/01/2023 12:00:10', '01/01/2023 12:15:00', '01/01/2023 15:00:00', '01/01/2023 15:05:10', '01/01/2023 15:15:00', '01/01/2023 15:30:10', '01/01/2023 15:35:15'], '航班号': [1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3], '客户名称': ['乔什', '爱丽丝', '罗伯特', '安娜', '安娜', '罗伯特', '乔什', '爱丽丝', '罗伯特', '罗伯特', '罗伯特'], '产品代码': ['001', '002', '002', '001', '003', '003', '004', '003', '001', '002', '003']}df = pd.DataFrame(data)chain_counts = (df.sort_values(by=['排序编号', '日期时间']) .loc[lambda d: d[['排序编号', '客户名称']] .ne(d[['排序编号', '客户名称']].shift()) .any(axis=1)] .groupby('排序编号')['客户名称'].agg('-'.join) .value_counts())print(chain_counts)chain_proportions = (df.sort_values(by=['排序编号', '日期时间']) .loc[lambda d: d[['排序号', '客户名称']] .ne(d[['排序号', '客户名称']].shift()) .any(axis=1)] .groupby('排序号')['客户名称'].agg('-'.join) .value_counts(normalize=True))print(
chain_proportions)登录后复制
总结
通过论文的教程,你学会了如何使用Pandas分析客户交付数据,提取客户链并统计其出现频率。这种方法评估各种场景,例如分析用户在网站上的访问路径、分析客户的购买行为等,帮助你发现隐藏的模式和规律,从而更好地理解客户行为,优化业务流程。
实际应用中的事情,你需要根据数据的具体情况调整代码。例如,如果数据中包含缺失值,你需要先处理缺失值。如果数据量非常大,可以考虑使用更高效的数据处理工具,例如Spark。客户链的长度可以根据实际需求进行调整。例如,你只能提取长度为2或3个的客户链。需要注意数据隐私,避免泄露客户的敏感信息。
以上就是使用Pandas分析客户链:提取客户交付顺序模式的详细内容,更多请关注乐哥常识网其他相关文章!