結合(concat)の使い方

ゆうき( @BASEBALLY15 )です^^

複数のデータフレームを合わせたいのですが・・・

concat』を使うと,データフレーム同士を結合することが出来ますよ^^
今回は,concatについて,ご紹介します.

よろしくお願いします・・・

concatを使うと何が出来るの?

concatを使うと何が出来るのか?

このように,2つのデータフレーム1つにまとめて表示させることが出来ます.

これ以外にも,様々な表示が出来ます.

それでは,コードを見ていきましょう⤵

結合(concat)の使い方をまとめました!

ライブラリ

まずは,今回使うライブラリを載せておきます.

# pandas をimport (表計算をしてくれる便利なライブラリ)
import pandas as pd

#行列を扱うためのライブラリ
import numpy as np

#正規性があるランダムな数を使うためのライブラリ
from numpy.random import randn

コード

2つのデータフレームをconcatで結合しよう!

1つ目のデータフレームを作ります.

dataframe_1 = pd.DataFrame({"A":[1,2,3,4,5], 
                           "B":[6,7,8,9,10], 
                           "C":[11,12,13,14,15]})

#実行
dataframe_1
ABC
01611
12712
23813
34914
451015

次に2つ目のデータフレームを作ります.

2つ目は,ランダムな数を並べます.

dataframe_2 = pd.DataFrame({"A":randn(3), 
                           "B":randn(3), 
                           "C":randn(3)})

#実行
dataframe_2
ABC
0-1.1600680.1474581.125276
10.3729710.658164-0.556152
20.497093-0.0584131.453761

それでは,concatで結合してみましょう⤵

#concatを使ってみる(dataframe_1とdataframe_2を結合する)
data_concat = pd.concat([dataframe_1, dataframe_2])

#実行
data_concat
ABC
01.0000006.00000011.000000
12.0000007.00000012.000000
23.0000008.00000013.000000
34.0000009.00000014.000000
45.00000010.00000015.000000
0-1.1600680.1474581.125276
10.3729710.658164-0.556152
20.497093-0.0584131.453761

このように,concatを使うと,データフレーム同士を結合することが出来ました.

次に,『Num』が表示された時の表示の仕方をご紹介します.

Numが表示された時はどうすればいいの?

Num』が表示されるように,3つ目のデータフレームを作ります.

dataframe_3 = pd.DataFrame({"C":randn(3), 
                           "D":randn(3), 
                           "E":randn(3)})

#実行
dataframe_3 
CDE
01.523983-0.378601-1.720186
1-1.8315800.846266-0.095803
22.479719-1.036963-0.484122

これと,1つ目のデータフレームをconcatで結合したいと思います.

#concatを使ってみる(dataframe_1とdataframe_3を結合する)
data_concat2 = pd.concat([dataframe_1, dataframe_3])

#実行
data_concat2
ABCDE
01.06.011.000000NaNNaN
12.07.012.000000NaNNaN
23.08.013.000000NaNNaN
34.09.014.000000NaNNaN
45.010.015.000000NaNNaN
0NaNNaN1.523983-0.378601-1.720186
1NaNNaN-1.8315800.846266-0.095803
2NaNNaN2.479719-1.036963-0.484122

このように,『Num』が表示されてしまいます.

そこで,2つのデータフレームのうち,

共通しているの値のみを取り出します.

コードはこのようになります⤵

#共通する行を結合
data_concat3 = pd.concat([dataframe_1, dataframe_3], join="inner")

#実行
data_concat3
C
011.000000
112.000000
213.000000
314.000000
415.000000
01.523983
1-1.831580
22.479719

join=”inner”

を使うことで,共通している項目のみ取り出すことが出来ます.

ちなみに,共通しているを結合したい場合は,このように書きます⤵

#共通する列を結合
data_concat4 = pd.concat([dataframe_1, dataframe_3], join="inner", axis=1)

#実行
data_concat4
ABCCDE
016111.523983-0.378601-1.720186
12712-1.8315800.846266-0.095803
238132.479719-1.036963-0.484122

axis=1

を使うことで,共通しているを結合することが出来ます.

最後に,リストを結合する方法をご紹介します⤵

リストにアペンド(append)したデータを結合するためには?(本題)

Pythonを勉強し始めて,for文に慣れてくると,

値をリストに入れる作業を行う機会があります.

例えば,このような場合です⤵

#空のリストを用意
locate_list = []

i = 1
for i in range(12):
    
    #指定したデータフレームの行を抽出
    df10 = df2_b[6*i-6 : 6*i]
    
    #リストに抽出した結果を入れる
    locate_list.append(df10)


#実行
locate_list
 [            Time  Num1  Num2
 1  2011/1/15 2:00     0     0
 2  2011/1/15 3:00     0     0
 3  2011/1/15 4:00     0     0
 4  2011/1/15 5:00     0     0
 5  2011/1/15 6:00     0     0
 6  2011/1/15 7:00     0     0,
                Time  Num1  Num2
 7    2011/1/15 8:00     0     0
 8    2011/1/15 9:00     0     0
 9   2011/1/15 10:00     0     0
 10  2011/1/15 11:00     0     0
 11  2011/1/15 12:00     0     0
 12  2011/1/15 13:00     0     0,
                Time  Num1  Num2
 13  2011/1/15 14:00     0     0
 14  2011/1/15 15:00     0     0
 15  2011/1/15 16:00     0     0
 16  2011/1/15 17:00     0     0
 17  2011/1/15 18:00     0     0
 18  2011/1/15 19:00     0     0,
                Time  Num1  Num2
 19  2011/1/15 20:00     0     0
 20  2011/1/15 21:00     0     0
 21  2011/1/15 22:00     0     0
 22  2011/1/15 23:00     0     0
 23   2011/1/16 0:00     0     0
 24   2011/1/16 1:00     0     0]

concatを使うと,これを一つに結合することが出来ます.

コードはこのようになります⤵

#リストを結合する
df_concat = pd.concat(locate_list)

#実行
df_concat
TimeNum1Num2
12011/1/15 2:0000
22011/1/15 3:0000
32011/1/15 4:0000
42011/1/15 5:0000
52011/1/15 6:0000
622011/1/17 15:00319
632011/1/17 16:00318
642011/1/17 17:00318
652011/1/17 18:00317
662011/1/17 19:00317

終わりに

本記事を読んでいただき,本当にありがとうございます!

今回は,結合(concat)の使い方についてご紹介しました.

Pythonで,データフレーム扱う時に,concatを使う機会がよくあるので,

ぜひ,この記事を見て,勉強してみてください^^

それでは・・・

Q &A

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA