Pandasの使い方4


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']