財務など分析系にはpythonというプログラミング言語が最適です。pythonを利用して業務効率を図るにはどうすればよいかを考えていきます。
データ処理をするにあたり、リストの使い方を学ぶ必要がありますので、まずリストの作り方、使い方についてまとめていきたいと思います。
得意先のデータを使って分析したいとき、得意先ごとに変数を利用していると、変数がいくつあっても足りません。
データをリストにして1つの変数にまとめましょう。
[リストの作成]
tokuisaki=[‘A’,’B’,’C’,’D’,’E’,’F’,’G’]
「リスト」を作るには、角括弧 [ ] の中にコンマ , で区切って複数のデータを記述します。
A社からG社を「tokuisaki」という1つの変数で管理します。
tokuisaki=[ ] が得意先リストになり、[ ] の中に得意先の社名を記述します。
print(tokuisaki)で確認すると、
>>>[‘A’,’B’,’C’,’D’,’E’,’F’,’G’]
と表示されtokuisaki変数にA社からG社まで格納されていることが確認できます。
リストに含まれるデータのことを「要素」といいますが、この例では要素が会社名ですので、文字列として記述されています。
文字列で記述するときには、’A’ のように「 ’ 」で囲みます。
文字を囲む「’ 」や、文字を区切る「, 」は半角で入力することに注意して下さい。
#得意先リスト
tokuisaki=[‘A’,’B’,’C’,’D’,’E’,’F’,’G’]
#得意先を追加する
tokuisaki.append(‘H’)
tokuisaki.append(‘I’)
>>>[‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’]
すでに tokuisaki=[ ] という得意先リストがあり、そのリストに新たに得意先を追加します。
リストにデータを追加するときには、append( ) を利用します。
append( ) の( )の中に追加したい得意先名を入力します。
ここでは、H社とI社の2社をリストに追加しています。
print(tokuisaki)で確認すると、
>>>[‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’]
と表示され、リストに ‘H’ と ‘I’ が追加されていることが確認できます。
#得意先リスト
tokuisaki=[‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’]
#得意先数を数える
len(tokuisaki)
>>>9
tokuisaki=[ ] のリストにA~Iまでの会社がセットされていますが、この会社数を数えたいと思います。
リストの要素数を数えるにはlen( )関数を利用します。
len( )の( )に変数名を入れてlen ( tokuisaki) とすると
>>>9
となり9社あることが確認できます。
#得意先リスト
tokuisaki=[‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’]
#得意先ごとインデックス番号を確認する
for i,v in enumerate(tokuisaki):
print(i,v)
tokuisaki=[ ] のリストの中にはA~Iまで9社のデータが格納されています。
リストの要素は1番目の要素を0として順番に番号が付けられており、この番号をインデックスといいます。
上のコードでは for 構文を利用してA~Iのそれぞれの得意先のインデックスを確認しており、次のように返ってきます。
0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
8 I
#得意先リスト
tokuisaki=[‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’]
#得意先リストのうち4番目(0始まり)を表示
tokuisaki[4]
>>> ‘E’
#得意先リストのうち4番目(0始まり)未満を表示
tokuisaki [:4]
>>> [‘A’, ‘B’, ‘C’, ‘D’]
#得意先リストのうち5番目(0始まり)以降を表示
tokuisaki[4:]
>>> [‘E’, ‘F’, ‘G’, ‘H’, ‘I’]
それぞれの会社のインデックス番号がわかりました。
tokuisakiリストの中から会社を呼び出したいと思います。
呼び出すときには、変数[インデックス番号]で呼び出します。
インデックスは「0」から始まるので注意が必要です。
Eを呼び出すときには tokuisaki[4] と記述します。
[ ]に4を指定すると、5番目の要素が呼び出されます。
[ : 4 ]とするとインデックスの4番目未満の値が呼び出されます。
インデックスの4番目は要素の5番目であり、「E」にあたります。
「E」未満の値が返りますので、
>>> [‘A’, ‘B’, ‘C’, ‘D’] となります。
[ 4 :]とするとインデックスの4番目以上の値が呼び出されます。
インデックスの4番目は要素の5番目であり、「E」にあたります。
「E」以上の値が返りますので、
>>> [‘E’, ‘F’, ‘G’, ‘H’, ‘I’] となります。
インデックス番号はあくまでも現在リストにある要素の連番ですので、ある要素(データ)が削除されるとそれ以降のインデックス番号は変わってしまいます。
インデックス番号は得意先番号には利用できません。
{辞書型の作成}
#得意先に得意先コードを付ける
tokuisaki={‘1-1′:’A’, ‘1-2′:’B’, ‘1-3′:’C’, ‘2-1′:’D’, ‘2-2′:’E’, ‘2-3′:’F’,’3-1′:’G’,’3-2′:’H’,’3-3′:’I’}
#得意先を呼び出す
tokuisaki[‘2-1’]
>>> D
インデックス番号は、0から始まる連番ですので要素が削除されると得意先に付されていた番号が変わってしまいます。
得意先ごとに得意先コードをセットするには「辞書型」を利用します。
変数={ キー1:値1, キー2:値2・・}
というように呼び出すキーと値をセットにして、波括弧{ } で括ります。
得意先A~Iに次のようにコードを決め、
tokuisaki={‘得意先コードA’ : ‘社名A’ , ‘得意先コードB’ : ‘社名B’ , ・・・}
のようにセットしていきます。
得意先コード 得意先名
1-1 A
1-2 B
1-3 C
2-1 D
2-2 E
2-3 F
3-1 G
3-2 H
3-3 I
tokuisaki [‘2-1’] とすると「D」が呼び出されます。
#得意先リスト
tokuisaki={‘1-1′:’A’, ‘1-2′:’B’, ‘1-3′:’C’, ‘2-1′:’D’, ‘2-2′:’E’, ‘2-3′:’F’,’3-1′:’G’,’3-2′:’H’,’3-3′:’I’}
#得意先一覧を作成する・・①
tokuisaki.values
>>> dict_values([‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’])
#得意先一覧から得意先Jが存在するか確認する・・②
if ‘J’ in tokuisaki.values():
print(‘exists’)
else:
print(‘not’)
>>> not
得意先J社が新たに増えました。
新規得意先 ‘J’ を辞書型に登録したいのですが、既に登録している可能性もあります。
新規得意先「J」がデータに存在するか確認をしていきます。
① まず、得意先一覧からコードを除いた得意先名のみの一覧を作成します。
「変数.values」で辞書型データから値のみ抽出した一覧が作成できますので、「 tokuisaki.values( ) 」と記述すると次のように値(取引先名)のみの一覧が取得できます。
>>> dict_values([‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’])
② 次に、このデータ一覧(tokuisaki.values) から新規得意先「J」が存在するかどうかをif文を使って検索していきます。
「J」はまだデータに存在していないので、「not」が返りました。
#得意先リスト
tokuisaki={‘1-1′:’A’, ‘1-2′:’B’, ‘1-3′:’C’, ‘2-1′:’D’, ‘2-2′:’E’, ‘2-3′:’F’,’3-1′:’G’,’3-2′:’H’,’3-3′:’I’}
#得意先コードが使用されているか確認する
‘3-4’ in tokuisaki
>>>False
新規得意先「J」はまだ登録されていないことが確認できました。
「J」の得意先コードを「3-4」としたいのですが、コードが重複することはできませんので、現在使用されているか確認の必要があります。
辞書型のリストの中に、’キー’ が存在しているかは「 ‘ キー’ in 変数 」で確認できます。
‘キー’を「3-4」とし、変数を「tokuisaki」として
「’3-4′ in tokuisaki」と記述すると
>>>False
と返答がありましたので現在利用されていないことがわかりました。
(既に使用されている場合は True が返ります)
#得意先リスト
tokuisaki={‘1-1′:’A’, ‘1-2′:’B’, ‘1-3′:’C’, ‘2-1′:’D’, ‘2-2′:’E’, ‘2-3′:’F’,’3-1′:’G’,’3-2′:’H’,’3-3′:’I’}
#新規得意先データを追加する
tokuisaki[‘3-4′]=’J’
新規得意先「J」はまだ登録されていないことが確認できました。
それでは、「J」社のコードを「3-4」として得意先データに追加していきます。
指定したキーが辞書内の要素にすでに使用されている場合は、変更になってしまい元のデータが消えてしまいますので注意が必要です。
(変更も追加も同じ構文のため)
print(tokuisaki) で次のように表示され、’3-4′ : ‘J’ が追加されていることが確認できました。
>>> {‘1-1’: ‘A’, ‘1-2’: ‘B’, ‘1-3’: ‘C’, ‘2-1’: ‘D’, ‘2-2’: ‘E’, ‘2-3’: ‘F’, ‘3-1’: ‘G’, ‘3-2’: ‘H’, ‘3-3’: ‘I’, ‘3-4’: ‘J’}
#得意先リスト
tokuisaki={‘1-1′:’A’, ‘1-2′:’B’, ‘1-3′:’C’, ‘2-1′:’D’, ‘2-2′:’E’, ‘2-3′:’F’,’3-1′:’G’,’3-2′:’H’,’3-3′:’I’,’3-4′:’J’}
#得意先コードの一覧を表示する
tokuisaki.keys()
>>> dict_keys ([‘1-1’, ‘1-2’, ‘1-3’, ‘2-1’, ‘2-2’, ‘2-3’, ‘3-1’, ‘3-2’, ‘3-3’, ‘3-4’])
得意先J社が新たに加わり、得意先コード「3-4」としました。
では、現在利用されている得意先コードのみを列挙してみます。
辞書の ‘キー’ を列挙するには、「keys( ) 」を利用します。
「変数.keys( ) 」と打ち込むと辞書型で利用している’ キー’ が列挙されます。
変数は「tokuisaki」ですので 「 tokuisaki.keys( ) 」と記述します。
すると次のように辞書の ‘キー’ である得意先コードの一覧が列挙されます。
>>> dict_keys([‘1-1’, ‘1-2’, ‘1-3’, ‘2-1’, ‘2-2’, ‘2-3’, ‘3-1’, ‘3-2’, ‘3-3’, ‘3-4’])
さきほど追加した「3-4」が加わっていることが確認できます。
#得意先リスト
tokuisaki={‘1-1′:’A’, ‘1-2′:’B’, ‘1-3′:’C’, ‘2-1′:’D’, ‘2-2′:’E’, ‘2-3′:’F’,’3-1′:’G’,’3-2′:’H’,’3-3′:’I’,’3-4′:’J’}
#辞書型をリスト型に変換する
list ( tokuisaki.keys() )
>>> [‘1-1’, ‘1-2’, ‘1-3’, ‘2-1’, ‘2-2’, ‘2-3’, ‘3-1’, ‘3-2’, ‘3-3’, ‘3-4’]
さきほど列挙した得意先コードは「dict_keys」という辞書型の型になっています。
>>> dict_keys ([‘1-1’, ‘1-2’, ‘1-3’, ‘2-1’, ‘2-2’, ‘2-3’, ‘3-1’, ‘3-2’, ‘3-3’, ‘3-4’])
これを使いやすいリスト型に変換します。
辞書型で列挙した「tokuisaki.keys( )」の記述を「list( )」で括って次のようにします。
list( tokuisaki.keys( ) )
リスト型に変換できました。
>>> [‘1-1’, ‘1-2’, ‘1-3’, ‘2-1’, ‘2-2’, ‘2-3’, ‘3-1’, ‘3-2’, ‘3-3’, ‘3-4’]
#得意先リスト
tokuisaki={‘1-1′:’A’, ‘1-2′:’B’, ‘1-3′:’C’, ‘2-1′:’D’, ‘2-2′:’E’, ‘2-3′:’F’,’3-1′:’G’,’3-2′:’H’,’3-3′:’I’,’3-4′:’J’}
#得意先コードと得意先名の組み合わせ一覧
list( tokuisaki.items() )
>>>
[(‘1-1’, ‘A’),
(‘1-2’, ‘B’),
(‘1-3’, ‘C’),
(‘2-1’, ‘D’),
(‘2-2’, ‘E’),
(‘2-3’, ‘F’),
(‘3-1’, ‘G’),
(‘3-2’, ‘H’),
(‘3-3’, ‘I’),
(‘3-4’, ‘J’)]
さきほどは得意先コードのみ列挙しましたが、ここで得意先コードと会社名をセットにして列挙してみたいと思います。
「items( )」メソッドを利用して list( 変数.items( ) )
と記述すると、’キー’ と ‘値’ を組み合わせにしたリストを得ることができます。
変数は「tokuisaki」ですので list( tokuisaki.items() )として記述しています。
(タプル型の作成)
リスト型、辞書型で作成したデータは追加、書き換えが可能です。
データを書き換えることができるということは、書き換えられてしまうということでもあります。
業務で使用するには、うっかりデータを削除してしまったり、書き換えてしまったりすることがないようにしたいものです。
その場合には、「タプル型」でデータを作成します。
タプルは丸カッコ( ) で定義します。
(リストはカギカッコ[ ] , 辞書型は波カッコ{ }でした。)
タプルは要素の追加、変更、削除ができません。
#辞書型データ
tokuisaki={‘1-1′:’A’, ‘1-2′:’B’, ‘1-3′:’C’, ‘2-1′:’D’, ‘2-2′:’E’, ‘2-3′:’F’,’3-1′:’G’,’3-2′:’H’,’3-3′:’I’,’3-4′:’J’}
#辞書型をタプル型に変換・・①
tp_tot=tuple(tokuisaki.items())
#辞書型のキー(得意先コード)をタプル型に変換・・②
tp_key=tuple(tokuisaki)
#辞書型の値(会社名)をタプル型に変換・・③
tp_value=tuple(tokuisaki.values())
①辞書型のデータを、キーと値をセットにしたままタプルに変換します。
print(tp_tot) で次のように表示されます。
>>> ((‘1-1’, ‘A’), (‘1-2’, ‘B’), (‘1-3’, ‘C’), (‘2-1’, ‘D’), (‘2-2’, ‘E’), (‘2-3’, ‘F’), (‘3-1’, ‘G’), (‘3-2’, ‘H’), (‘3-3’, ‘I’), (‘3-4’, ‘J’))
②辞書型のデータのうち、キーのみをタプルにするには
tuple(変数)で変換できます。
キーである得意先コードをタプルにして、変数 tp_key に格納します。
tp_key=tuple(tokuisaki)
print(tp_key) で次のように表示されます。
>>> (‘1-1’, ‘1-2’, ‘1-3’, ‘2-1’, ‘2-2’, ‘2-3’, ‘3-1’, ‘3-2’, ‘3-3’, ‘3-4’)
③辞書型のデータのうち、値データのみをタプルにするには
まず「変数.values()」で辞書型データから値のみを抜き出します。
それをtupule() で囲み tuple( 変数.values() ) となります。
値である得意先名をタプルにして、変数 tp_value に格納します。
tp_value=tuple( tokuisaki.values() )
print(tp_value)で次のように表示されます。
>>> (‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’)
{集合型の作成}
集合型は辞書型と同じく波カッコ{ }で括ります。
(辞書型のようにキーはありません)
集合型は重複する値を持たせることはできず、順序も意図的に付けられません。
その代わり、結合したり、差を求めたり、同一データを抽出したりすることができます。
#集合型を作る
tokuisakiA={‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’}
tokuisakiB={‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’J’}
#含まれないデータを抽出する・・①
tokuisakiA-tokuisakiB
>>> {‘H’, ‘I’}
#集合体の値を1つにまとめる・・②
tokuisakiA|tokuisakiB
>>> {‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’}
#共通する値の取得・・③
tokuisakiA & tokuisakiB
>>> {‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’}
#共通しない値の取得・・④
tokuisakiA^tokuisakiB
>>> {‘H’, ‘I’, ‘J’}
#所在の確認・・⑤
‘H’ in tokuisakiA
>>> True
‘H’ in tokuisakiB
>>> False
「tokuisakiA」と「tokuisakiB」という2つの集合型があります。
「tokuisakiA」には {‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’,’I’} が格納されています。
「tokuisakiB」には {‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’J’} が格納されています。
①A集合型からB集合型に含まれないデータを抽出します。
(「-」を使います)
tokuisakiA – tokuisakiB
>>> {‘H’, ‘I’}
tokuisakiAのうち、tokuisakiBに含まれないデータは
「H」と「I」とわかりました。
②2つの集合型を1つにまとめます。
(「+」ではなく「 | 」を使います)
tokuisakiA|tokuisakiB
>>> {‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’, ‘I’, ‘J’}
2つの集合型が重複しないように1つにまとまりました。
③2つの集合型の共通する値を取得します。
(「&」を使います)
tokuisakiA & tokuisakiB
>>> {‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’}
2つの集合型のうち重複しているデータを抽出しました。
④2つの集合型の共通しない値を取得します。
(「^」を使います)
tokuisakiA^tokuisakiB
>>> {‘H’, ‘I’, ‘J’}
2つの集合型のうち重複していないデータを抽出しました。
⑤それぞれの集合型のうち任意のデータ(H)が存在するかを確認します。
‘H’ in tokuisakiA
>>> True
「H」は「tokuisakiA」に存在していることがわかりました。
‘H’ in tokuisakiB
>>> False
「H」は「tokuisakiB」に存在していないことがわかりました。