LoginSignup
0
2

More than 1 year has passed since last update.

Pandasの使い方4

Last updated at Posted at 2021-05-02

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2