Pythonのデータ分析の戦闘:古典的なコホート分析

著者|周Zhipeng

Zebian |郭ルイ

まず、同期間のグループ解析の概念は簡単な紹介を行い、その後、明確かつ再現性のすべてのステップをやろうとし、最終的にデータの概要、データクリーニング、アイデアの分析、およびプロセスのシングルポイントを達成に従ってください。再び練習に従ってください、ない能力モデルや使用パンダの理解のレベルがCengcengがジャンプアップしますかまい。注:あなたは完全なエンド実際のデータとコードを取得することができ、空中テキスト

同期間を分析するグループとは何ですか?

同期間におけるグループ解析データ解析は、思考の古典的なヒンで、コアは、時間によって異なるグループに分け、最初のユーザーの行動を、場所を取るし、その後時間をかけて同様の行動の変化のグループ内でどのように変化を分析することです。

これは、一般的にこのような保持テーブルによって実現されます。

今後数ヶ月で退職の各行、顧客に代わって新しい月、。

水平方向の比較を通じて、保持およびライフサイクルは、お客様の予備的な理解を持つことができます。異なるクライアントの縦方向の観察は、保持不一致、精度のかどうか導入の反プッシュクライアントを見つけることができます。

このテーブルには、達成するために、いくつかの高度なツールがあり、単純明快に見えますが、あなたは本当に実装する、または脳の多くをねじるようにPythonベースの受注を使用します。

データの概要

まず、輸入注文データは、ちなみに、などのソース・データ・ルックスを見てみましょう:

これは、揚げより次いで高度小さな食料品店のZデータです。その後の分析では、顧客のキーフィールドのニックネーム、支払いの際、注文状況や支払額を使用します。

データや行方不明例量を表示します。

42713行を合計注文は、支払いの時間に加えて、他の人が(欠損値を除く)完全です。

全体的に構造化されたフォーマットは、日時フォーマット支払いの時のために、購入金額や回数は数値です。

データクリーニング

フォーカスを清掃することは非常に多くの支払いが不足している理由を理解することです。私たちは、最初の行の決済時間がnull、それをチェックアウトされたスクリーニング:

一見、支払データの時間が不足して、注文状況は、主に「取引に失敗しました。」ここには実際の取引から、支払いの時間を逃すための予備的な推論された理由をすることができません。

案の定、決済注文の時間の不足は、「取引が失敗した」状態、および完全なデータがある「成功した取引。」

すると、ちょうど成功した取引のような注文をフィルタリング:

データの40339行は、メインの戦場コホート分析です。

考え方

表は、プレゼンスの開始スワイプセンスを聞かせて保持しました:

直接一回、このテーブルを生成する方法を考えては、本当に髪を過ごしました。思考のより合理的な方法は、この表のビルディングブロックを分解することです。

このテーブルの各行は、コホートを表すが、その本質は同じ論理です。

  • まず、月新規顧客の数や記録、顧客のニックネームを計算します。

  • そして、顧客のこの部分を取り、顧客がマッチングを行うために、月買い戻す、と複雑な購入(保持)の表示方法を多くの顧客カウントするようにしました。

私たちは新しい顧客との保持状況の対応する月を計算する限り、これらのデータを一緒にスプライスされているように、私たちは切望されたコホート保持テーブルを取得します。

単月達成

彼らは他の月に適用され、計算ロジック月達成するために思考のステップに従って、問題が容易になります。

彼らは「年 - 月」の文字列で、時系列に関係していないので、食料品店のデータ保持時間次元および上記の表は、同じではありませんタブを簡単に:

受注ソースデータは2020年9月19日2月からです。我々コホート分析の単一の行を達成するためのモデルの2019年10月のデータ。

明らかに、2019年10月には、7336人の顧客の合計は、8096件のペンの注文を買いました。

次に、我々は新しい顧客の数毎月、新しい、そして月前にこれを確認するために試合を横断する必要があることを計算し、前2019年10月に、顧客は、2019年9月のデータは次のとおりです。

そして、過去のデータは、マッチング、検証および2019年10月に新規顧客の数をスクリーニングを行います。

その後、退職に毎月算出した10月のマッチング、月と顧客ニックネーム後:

新しい月の始まりは、顧客のリストに追加されます。

2019年10月新規顧客7083、来月(11月)が減少し、その後、539人を保持し、そして2020年2月に顧客数は買戻しが前月からわずかに増加留保しました。

その他の保持され、新しい計算解析ロジックの数ヶ月だけでなく。

トラバーサル合併

最初の注文履歴に応じたモデルとして、当社の2019年10月に戻るには、顧客維持の数を確認するために、毎月の寸法、顧客フォローヶ月のトラバースが続き、その月の純粋な新規顧客をマッチング。

リサイクルを容易にするために、我々は、月のリストを紹介しています:

完全なコードと批判的なコメントは以下の通り:

#引入时间标签
month_lst = order['时间标签'].unique()
final = pd.DataFrame()

for i in range(len(month_lst) - 1):

    #构造和月份一样长的列表,方便后续格式统一
    count = [0] * len(month_lst)

    #筛选出当月订单,并按客户昵称分组
    target_month = order.loc[order['时间标签'] == month_lst[i],:]
    target_users = target_month.groupby('客户昵称')['支付金额'].sum().reset_index()

    #如果是第一个月份,则跳过(因为不需要和历史数据验证是否为新增客户)
    if i == 0:
        new_target_users = target_month.groupby('客户昵称')['支付金额'].sum().reset_index()
    else:
        #如果不是,找到之前的历史订单
        history = order.loc[order['时间标签'].isin(month_lst[:i]),:]
        #筛选出未在历史订单出现过的新增客户
        new_target_users = target_users.loc[target_users['客户昵称'].isin(history['客户昵称']) == False,:]

    #当月新增客户数放在第一个值中
    count[0] = len(new_target_users)

    #以月为单位,循环遍历,计算留存情况
    for j,ct in zip(range(i + 1,len(month_lst)),range(1,len(month_lst))):
        #下一个月的订单
        next_month = order.loc[order['时间标签'] == month_lst[j],:]
        next_users = next_month.groupby('客户昵称')['支付金额'].sum().reset_index()
        #计算在该月仍然留存的客户数量
        isin = new_target_users['客户昵称'].isin(next_users['客户昵称']).sum()
        count[ct] = isin

    #格式转置
    result = pd.DataFrame({month_lst[i]:count}).T

    #合并
    final = pd.concat([final,result])

final.columns = ['当月新增','+1月','+2月','+3月','+4月','+5月']

详细详细!我々は成功した予想データを得ました。

しかし、実際のデータ保持が形に具現化され、その後、わずかに加工します:

最後に、あなたは完了です。私たちは、コホート分析表を達成したいです。単純なスイープ2を見つけることができます:

  • 水平ビュー、月の重大な損失は、翌月の最高のパフォーマンスがわずか12%を保持し、その後、着実に6%程度で安定化、減少しました。

  • 垂直方向のコントラストは、2019年の新規顧客の月の最小値、唯一の2042が、比較的正確な群衆の中に、保持は、今年の残りを上回りました。

  • ...

限られたスペースのため、忠実なの左側のビジュアル部分は少し自分自身を練習するために〜

そして、完全なデータソースコードします。https://pan.baidu.com/s/1x_f1a5-zqJdRAxMKsL70Ew抽出コード:aiqf

著者:周Zhipeng、3年間のデータ分析、深く感じた楽しさと欲求不満の不足した場合のデータ解析の学習プロセスは、その後、新しくオープンしたパブリック数(実際のデータを含む関連して興味深い例は、定期的に更新されたデータ分析技術を「データが自慢されていません」セット)、交流に関心を歓迎します。

免責事項:この記事の提出は、それがすべてに属します。

【終わり】

防疫は、どのように並行して作業に戻るには?Tianyunは、人工知能、データ監視プログラムを開始しました!最終的にはどのようにではなく、実際後よりも、予防を進める行うには?午後8時木曜日日、クラウドデータVPヨンジュンあなたは答えを明らかにするために!次のFanger魏コード無料登録をスキャン

推奨読書 

10年近く、それを選択し、言語のルーキーに大きなPKをプログラミング!

眠れない夜技術が今は使用することを学んだ、としていた......

あなたのビジネスの下では、人工知能に必要どのような状況?あなたはそれを持っている必要がありますどのような条件と能力を見てみましょう!

5億件のBO疑いのデータが漏洩し、どのようにPythonの爬虫類の陥没穴をステッピング避けるために?

開発者@、MicrosoftのCEOサティヤは、あなたがそれを取るためにあえて、コーヒーを作るために60大ビルドアップを率い?

中本を主張することは、彼は怒っている裁判官の嫌いだった:あなたの証言には信憑性がありません!

あなたは、私が好きなよう真剣に、すべてのポイントを見て

元のテキストを読むためにクリックして、参加してサインアップ

リリース1878元の記事 ウォンの賞賛40000 + ビュー1707万+

おすすめ

転載: blog.csdn.net/csdnnews/article/details/105108969