1 この記事は
DataFrame型データの各種操作方法をメモする。
題名 | リンク |
---|---|
【python】Pandasの使い方 | LINK |
【python】Pandas2の使い方 | LINK |
【python】Pandas3の使い方 | LINK |
【python】Pandas4の使い方 | LINK |
【python】Pandas5の使い方 | LINK |
【python】Pandas ,pythonコードメモ 6 | LINK |
2 内容
2-1 DataFrame型の特定の列にて欠損値がある行を取り出す
sample.py
import pandas as pd
import numpy as np
# dataを定義する。
dat = [
[1,100],
[2,],
[3,300],
[4,400],
[5,],
]
# datをDataFrame型変数dfに格納する。
df = pd.DataFrame(dat,columns=["A","B"])
display(df)
df1=df[df['B'].isnull()]
print("B列に欠損値がある行のみを抽出する")
display(df1)
実行結果
A B
0 1 100.0
1 2 NaN
2 3 300.0
3 4 400.0
4 5 NaN
B列に欠損値がある行のみを抽出する
A B
1 2 NaN
4 5 NaN
2-2 For文,list型結合
listsに\nが混在している。\nにてデータを分離し新しいlistを作る
sample.py
lists=['7201', '8524', '1605\n5020', '7201', '9432']
tmplist=[]
for list in lists:
tmplist.extend(list.split("\n"))
tmplist
実行結果
['7201', '8524', '1605', '5020', '7201', '9432']
2-3 List型要素をstr型からint型に変更する。
listsに\nが混在している。\nにてデータを分離し新しいlistを作る
sample.py
ls = ["10", "20", "30", "40", "50"]
print(ls)
ls = [int(i) for i in ls] # ここでリストの中の値をint型へ変換しています。
print(ls)
実行結果
['10', '20', '30', '40', '50']
[10, 20, 30, 40, 50]
2-4 index値を指定し、DataFrameの行を抽出する
sample.py
import pandas as pd
dat0 = [
['2019-07-01','9997','740'],
['2019-07-02','9997','749'],
['2019-07-03','9997','757'],
]
df0 = pd.DataFrame(dat0,columns=["A","B","C"])
display(df0)
# A,B列をindexに指定する。
df0=df0.set_index(["A"])
print("index='2019-07-01'の行を抽出する")
display(df0.loc[['2019-07-01']])
実行結果
A B C
0 2019-07-01 9997 740
1 2019-07-02 9997 749
2 2019-07-03 9997 757
index='2019-07-01'の行を抽出する
B C
A
2019-07-01 9997 740
2-5 dict型配列を結合させる。
sample.py
import pandas as pd
import numpy as np
col=["X","Y","Z"]
dict1={col[0]:[1,2,3],col[1]:[4,5,6]}
dict2={col[2]:[7,8,9]}
dict2.update(dict1)
print("dict2")
print(dict2)
実行結果
# "dict型配列を結合させる"
dict2
{'Z': [7, 8, 9], 'X': [1, 2, 3], 'Y': [4, 5, 6]}
2-6 List型を転置する
sample.py
import pandas as pd
import numpy as np
ex1=[[1,2,3],[4,5,6]]
ex2=np.array(ex1)
print("ex1:")
print(ex1)
print("ex2:")
print(ex2)
実行結果
ex1:
[[1, 2, 3], [4, 5, 6]]
ex2:
[[1 2 3]
[4 5 6]]
2-7 くり返し処理において要素と添え字を同時取得する
sample.py
list1 = ['item1', 'item2', 'item3']
for index, item in enumerate(list1):
print("インデックス:" + str(index) + ", 値:" + item)
実行結果
インデックス:0, 値:item1
インデックス:1, 値:item2
インデックス:2, 値:item3
2-8 Dict型変数をDataFrame型に変換する
sample.py
import pandas as pd
import numpy as np
dict1={"X":[1,2,3],"Y":[4,5,6]}
print("dict型変数 dict1を表示する")
print(dict1)
dict1=pd.DataFrame(dict1,columns=['X', 'Y'])
print("DataFrane型 dict1を表示する")
display(dict1)
実行結果
dict型変数 dict1を表示する
{'X': [1, 2, 3], 'Y': [4, 5, 6]}
DataFrane型 dict1を表示する
X Y
0 1 4
1 2 5
2 3 6
2-9 2次元配列の作り方
sample.py
import pandas as pd
import numpy as np
print("list型変数を用意する。")
li=[[1, 2, 3], [4, 5, 6]]
print(li)
print("list型変数を2次元配列に変換する。")
ex=np.array(li) # これで2-dimensional array(2次元配列)
print(ex)
実行結果
list型変数を用意する。
[[1, 2, 3], [4, 5, 6]]
list型変数を2次元配列に変換する。
[[1 2 3]
[4 5 6]]
2-10 DataFrameをList型に変換する。
/home/sampletest/sample.py
import numpy as np
import pandas as pd
dat = [
['2019-07-01','9990'],
['2019-07-02','9991'],
['2019-07-03','9992'],
['2019-07-04','9993'],
['2019-07-05','9995'],
['2019-07-08','9996']
]
df0 = pd.DataFrame(dat,columns=["A","B"])
print(df0)
# DataFrameをList型に変換している。
df0_list=df0['B'].values.tolist()
print(df0_list)
実行結果
df0
A B
0 2019-07-01 9990
1 2019-07-02 9991
2 2019-07-03 9992
3 2019-07-04 9993
4 2019-07-05 9995
5 2019-07-08 9996
df0_list
['9990', '9991', '9992', '9993', '9995', '9996']