質問するログイン新規登録

回答編集履歴

5

d

2019/07/23 15:41

投稿

tiitoi
tiitoi

スコア21962

answer CHANGED
@@ -100,7 +100,7 @@
100
100
  > Python的にはどの文法用法なのか教えて頂けませんか?
101
101
 
102
102
  以下の例で説明すると、
103
- 1. df["Col1"] で Col1 列を Series オブジェクト (1次元配列) で取得する。
103
+ 1. df["Col1"] で Col1 列を Series オブジェクト (1次元配列) で取得する。
104
104
  2. df["Col1"] == "A" で値が "A" のインデックスは True、そうでないインデックスは False のブール型の Series オブジェクトが返る。
105
105
  3. DataFrame の [] にブール型の Series オブジェクトを渡すことで、値が True のインデックスの行だけを抽出できる。
106
106
 

4

っd

2019/07/23 15:41

投稿

tiitoi
tiitoi

スコア21962

answer CHANGED
@@ -101,7 +101,7 @@
101
101
 
102
102
  以下の例で説明すると、
103
103
  1. df["Col1"] で列 Col1 列を Series オブジェクト (1次元配列) で取得する。
104
- 2. df["Col1"] == "A" で値が "A" のインデックスは True、そうでない要素は False のブール型の Series オブジェクトが返る。
104
+ 2. df["Col1"] == "A" で値が "A" のインデックスは True、そうでないインデックスは False のブール型の Series オブジェクトが返る。
105
105
  3. DataFrame の [] にブール型の Series オブジェクトを渡すことで、値が True のインデックスの行だけを抽出できる。
106
106
 
107
107
  numpy のブールインデックスと似た機能です。

3

d

2019/07/23 15:37

投稿

tiitoi
tiitoi

スコア21962

answer CHANGED
@@ -71,4 +71,68 @@
71
71
 
72
72
  ![イメージ説明](6d8678e05d7bb2050b4074b2e26e03f4.png)
73
73
 
74
- bean_number をコードに直接書く代わりにコマンドライン引数で渡したい場合は argparse モジュールをお使いください。
74
+ bean_number をコードに直接書く代わりにコマンドライン引数で渡したい場合は argparse モジュールをお使いください。
75
+
76
+ ## 追記
77
+
78
+ > フォーマット済み文字列リテラル自体初めて見たので、(自分のキャパの問題で)まだ完全に理解しきれていませんが、少し自分の方で調べてみます。
79
+
80
+ Python 3.6 以降で利用できる言語機能です。
81
+ 変数を文字列の中に埋め込むやり方は以下の3つがあります。(上から古い順)
82
+ f-string はわりと最近追加された機能なので、ネット上のコードは format() を使っているものが多いですが、シンプルにかけるので気に入っています。
83
+
84
+ ```python
85
+ val = 123
86
+
87
+ # Python 2
88
+ s = 'val == %d' % val
89
+ print(s) # val == 123
90
+
91
+ # format() (Python 3 以降)
92
+ s = 'val == {}'.format(val)
93
+ print(s) # val == 123
94
+
95
+ # f-string (Python 3.6 以降)
96
+ s = f'val == {val}'
97
+ print(s) # val == 123
98
+ ```
99
+
100
+ > Python的にはどの文法用法なのか教えて頂けませんか?
101
+
102
+ 以下の例で説明すると、
103
+ 1. df["Col1"] で列 Col1 列を Series オブジェクト (1次元配列) で取得する。
104
+ 2. df["Col1"] == "A" で値が "A" のインデックスは True、そうでない要素は False のブール型の Series オブジェクトが返る。
105
+ 3. DataFrame の [] にブール型の Series オブジェクトを渡すことで、値が True のインデックスの行だけを抽出できる。
106
+
107
+ numpy のブールインデックスと似た機能です。
108
+
109
+ [NumPy配列のブールインデックス参照](https://hydrocul.github.io/wiki/numpy/ndarray-ref-boolean.html)
110
+
111
+ 実装上の話をすると、Python では自作のクラスで、`[]` や `==` などの演算子をオーバーライドできるので、このような仕組みを実現できています。
112
+
113
+ ```python
114
+ import pandas as pd
115
+
116
+ df = pd.DataFrame({'Col1': ['A', 'A', 'B', 'C'],
117
+ 'Col2': [31, 2, 3, 4]})
118
+ print(df)
119
+ # Col1 Col2
120
+ # 0 A 31
121
+ # 1 A 2
122
+ # 2 B 3
123
+ # 3 C 4
124
+
125
+ mask = df["Col1"] == "A"
126
+ print(mask)
127
+ # 0 True
128
+ # 1 True
129
+ # 2 False
130
+ # 3 False
131
+ # Name: Col1, dtype: bool
132
+
133
+ df2 = df[mask]
134
+ print(df2)
135
+ # Col1 Col2
136
+ # 0 A 31
137
+ # 1 A 2
138
+ ```

2

d

2019/07/23 15:34

投稿

tiitoi
tiitoi

スコア21962

answer CHANGED
@@ -67,4 +67,8 @@
67
67
 
68
68
  df = pd.read_csv("book1.csv", encoding="shift_jis")
69
69
  plot(df, bean_number="B2")
70
- ```
70
+ ```
71
+
72
+ ![イメージ説明](6d8678e05d7bb2050b4074b2e26e03f4.png)
73
+
74
+ bean_number をコードに直接書く代わりにコマンドライン引数で渡したい場合は argparse モジュールをお使いください。

1

d

2019/07/23 15:02

投稿

tiitoi
tiitoi

スコア21962

answer CHANGED
@@ -35,7 +35,7 @@
35
35
  if df.empty:
36
36
  print(f"bean number {bean_number} does not exist in the data frame.")
37
37
  return
38
- bean_name = data.iloc[0]["Sumple"]
38
+ bean_name = df.iloc[0]["Sumple"]
39
39
  # -------------------------------------
40
40
 
41
41
  fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(40, 10))