質問編集履歴

2

説明追加

2019/11/20 05:18

投稿

MagMag
MagMag

スコア80

test CHANGED
File without changes
test CHANGED
@@ -37,3 +37,97 @@
37
37
  print(C(B(A(100)))) # 20600
38
38
 
39
39
  ```
40
+
41
+
42
+
43
+ ##以下追記
44
+
45
+ 質問が曖昧との指摘をいただいたので、もう少し具体的に例を挙げてみました。
46
+
47
+
48
+
49
+ 前者はdefを使わない例です。
50
+
51
+
52
+
53
+ この場合、各処理(3倍したり2乗したり正規化したりするなど)の機能修正は上から順にスクリプトを処理していけば実施できる一方、プログラムが長くなってくると、各機能がわかりにくくなってくるデメリットがあります。
54
+
55
+
56
+
57
+ 一方、後者のdefを使った場合、各関数で何をやっているのかがわかりやすくなり(この例だと短いのであまり意味がないですが)、各機能で機能修正もしやすいなどのメリットがあります。
58
+
59
+
60
+
61
+ ただ、**後者で機能修正/追加する場合、以下の操作をしないといけないため、面倒と感じてしまいます。そこで、もっとよりやり方はないでしょうか?というのが質問の意図です。**その対応の1つとして、test機能を使ったら?という回答をいただきました。
62
+
63
+ 1. def文を使わない形に直す
64
+
65
+ 2. xを100とか10など入力して機能修正/追加(変数の数が多いと特に面倒)
66
+
67
+ 3. またdef文にしてreturnを定義する
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+ ## defを使わない場合
78
+
79
+ ``` 
80
+
81
+ import pandas as pd
82
+
83
+
84
+
85
+ df = pd.DataFrame([[1,50,100],[5,12,200],[6,23,335]],columns=['A','B','C'])
86
+
87
+
88
+
89
+ df['A'] = df['A'] * 3 # 3倍する
90
+
91
+ df['B'] = df['B'] **2 # 2乗する
92
+
93
+ autoscale_df = (df-df.mean())/df.std() # 正規化する
94
+
95
+ ```
96
+
97
+
98
+
99
+ ## defを使う場合
100
+
101
+ ``` 
102
+
103
+ # 機能定義部
104
+
105
+ def multiply_3(x):
106
+
107
+ return x * 3
108
+
109
+
110
+
111
+ def square(x):
112
+
113
+ return x**2
114
+
115
+
116
+
117
+ def autoscale(df):
118
+
119
+ return (df-df.mean())/df.std()
120
+
121
+
122
+
123
+ # メイン関数
124
+
125
+ df = pd.DataFrame([[1,50,100],[5,12,200],[6,23,335]],columns=['A','B','C'])
126
+
127
+ df['A'] = multiply_3(df['A'])
128
+
129
+ df['B'] = square(df['B'])
130
+
131
+ autoscale_df = autoscale(df)
132
+
133
+ ```

1

文法修正

2019/11/20 05:18

投稿

MagMag
MagMag

スコア80

test CHANGED
File without changes
test CHANGED
@@ -34,10 +34,6 @@
34
34
 
35
35
  # メイン実行部
36
36
 
37
- x=100
38
-
39
-
40
-
41
37
  print(C(B(A(100)))) # 20600
42
38
 
43
39
  ```