質問編集履歴
1
コードをすべて書きました。逆にわかりづらくなっていたら申し訳ないです。「#期間を出す」の部分の処理で警告が出ている状況です。
test
CHANGED
File without changes
|
test
CHANGED
@@ -48,6 +48,50 @@
|
|
48
48
|
|
49
49
|
```Python3
|
50
50
|
|
51
|
+
import numpy as np
|
52
|
+
|
53
|
+
import pandas as pd
|
54
|
+
|
55
|
+
import matplotlib.pyplot as plt
|
56
|
+
|
57
|
+
%matplotlib inline
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
cs_master = pd.read_csv("customer_master.csv")
|
62
|
+
|
63
|
+
class_master = pd.read_csv("class_master.csv")
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
cs_master.head()
|
68
|
+
|
69
|
+
class_master.head()
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
#文字列から日付へ変換
|
74
|
+
|
75
|
+
cs_master["start_date"] = pd.to_datetime(cs_master["start_date"])
|
76
|
+
|
77
|
+
cs_master["end_date"] = pd.to_datetime(cs_master["end_date"])
|
78
|
+
|
79
|
+
cs_master["start_ym"] = cs_master["start_date"].dt.strftime("%Y%m")
|
80
|
+
|
81
|
+
cs_master["end_ym"] = cs_master["end_date"].dt.strftime("%Y%m")
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
#結合
|
86
|
+
|
87
|
+
cs_join = pd.merge(cs_master, class_master, on="class", how="left")
|
88
|
+
|
89
|
+
cs_join.head()
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
#期間を出す
|
94
|
+
|
51
95
|
from dateutil.relativedelta import relativedelta
|
52
96
|
|
53
97
|
cs_join["calc_date"] = cs_join["end_date"]
|
@@ -68,7 +112,23 @@
|
|
68
112
|
|
69
113
|
```
|
70
114
|
|
115
|
+
```cs_join.head()
|
116
|
+
|
117
|
+
customer_id name class gender start_date end_date campaign_id is_deleted start_ym end_ym class_name price
|
118
|
+
|
119
|
+
0 OA832399 XXXX C01 F 2015-05-01 NaT CA1 0 201505 NaN オールタイム 10500
|
120
|
+
|
121
|
+
1 PL270116 XXXXX C01 M 2015-05-01 NaT CA1 0 201505 NaN オールタイム 10500
|
122
|
+
|
123
|
+
2 OA974876 XXXXX C01 M 2015-05-01 NaT CA1 0 201505 NaN オールタイム 10500
|
124
|
+
|
125
|
+
3 HD024127 XXXXX C01 F 2015-05-01 NaT CA1 0 201505 NaN オールタイム 10500
|
126
|
+
|
127
|
+
4 HD661448 XXXXX C03 F 2015-05-01 NaT CA1 0 201505 NaN ナイト 6000
|
128
|
+
|
71
|
-
```
|
129
|
+
```
|
130
|
+
|
131
|
+
```cs_join[["start_date", "end_date", "calc_date", "member_period"]].head()
|
72
132
|
|
73
133
|
start_date end_date calc_date member_period
|
74
134
|
|