Pythonでpandas入門2(データの追加と削除および並び替え)

Pythonのデータ分析で用いられるpandasの入門編です。データ(DataFrame)の列と行の追加および削除と、データの並び替えについて解説します。

目次

  1. 列の追加
  2. 列の削除
  3. 行の追加
  4. 行の削除
  5. データの並び替え

列の追加

新しい列名の指定による追加

DataFrameに新しい列名を指定して値を追加すると、新たな列が追加されます。

CSVファイルを読み込んで、新しい列を追加してみます。

import pandas as pd

df = pd.read_csv('test.csv', encoding='shift_jis')
print(df)
df['new_col'] = [True, True, False, False]
print(df)

下記のように、dfに新しい列が追加されます。

        Name  World  Japan
0    Windows  75.56  65.88
1       OS X  16.48  16.64
2  Chrome OS   2.09   0.51
3      Linux   1.97   1.34

        Name  World  Japan  new_col
0    Windows  75.56  65.88     True
1       OS X  16.48  16.64     True
2  Chrome OS   2.09   0.51    False
3      Linux   1.97   1.34    False

assignメソッドによる列の追加

assignメソッドに列名と値を指定することで、新しいDataFrameを作成できます。

import pandas as pd

df = pd.read_csv('test.csv', encoding='shift_jis')
df2 = df.assign(new_col = [True, True, False, False])
print(df)
print(df2)

dfは元のままで、列が追加されたDataFrame df2が作成されました。

Name  World  Japan
0    Windows  75.56  65.88
1       OS X  16.48  16.64
2  Chrome OS   2.09   0.51
3      Linux   1.97   1.34

        Name  World  Japan  new_col
0    Windows  75.56  65.88     True
1       OS X  16.48  16.64     True
2  Chrome OS   2.09   0.51    False
3      Linux   1.97   1.34    False

列の削除

del文による列の削除

del文でDataFrameの列名を指定することで、特定の列を削除できます。

import pandas as pd

df = pd.read_csv('test.csv', encoding='shift_jis')
print(df)
del df['World']
print(df)
        Name  World  Japan
0    Windows  75.56  65.88
1       OS X  16.48  16.64
2  Chrome OS   2.09   0.51
3      Linux   1.97   1.34

        Name  Japan
0    Windows  65.88
1       OS X  16.64
2  Chrome OS   0.51
3      Linux   1.34

dropメソッドによる列の削除

dropメソッドに列名とaxisを指定することで、任意の列を削除できます。

import pandas as pd

df = pd.read_csv('test.csv', encoding='shift_jis')
df2 = df.drop('World', axis=1)
print(df)
print(df2)

元のDataFrame dfはそのままで、列が削除されたdf2が作成されました。

        Name  World  Japan
0    Windows  75.56  65.88
1       OS X  16.48  16.64
2  Chrome OS   2.09   0.51
3      Linux   1.97   1.34

        Name  Japan
0    Windows  65.88
1       OS X  16.64
2  Chrome OS   0.51
3      Linux   1.34

行の追加

appendメソッドで、新たな行を追加できます。appendメソッドのignore_index引数をTrueにすると、追加した行にインデクス番号が振られます。

import pandas as pd

df = pd.read_csv('test.csv', encoding='shift_jis')
print(df)
df2 = df.append(pd.DataFrame([['others', 3.9, 15.63]], columns=df.columns), ignore_index=True)
print(df2)

元のDaraFrame dfは変更されず、行が追加されたDaraFrame df2が作成されました。

        Name  World  Japan
0    Windows  75.56  65.88
1       OS X  16.48  16.64
2  Chrome OS   2.09   0.51
3      Linux   1.97   1.34

        Name  World  Japan
0    Windows  75.56  65.88
1       OS X  16.48  16.64
2  Chrome OS   2.09   0.51
3      Linux   1.97   1.34
4     others   3.90  15.63

行の削除

dropメソッドで、任意の行の削除ができます。drop(n)でインデックスnの行が削除されます。axisの指定は不要です。

import pandas as pd

df = pd.read_csv('test.csv', encoding='shift_jis')
df2 = df.drop(1)
print(df)
print(df2)

元のDaraFrameは変更されず、インデックス1の行が削除されたDataFrame df2が作成されました。

        Name  World  Japan
0    Windows  75.56  65.88
1       OS X  16.48  16.64
2  Chrome OS   2.09   0.51
3      Linux   1.97   1.34

        Name  World  Japan
0    Windows  75.56  65.88
2  Chrome OS   2.09   0.51
3      Linux   1.97   1.34

インデックス番号は振り直しされないのですね。

データの並び替え

インデックス番号で並び替える

sort_index()メソッドで、インデックス番号での並び替えができます。

昇順に並び替えたい場合はascending引数をTrueにするか指定しません。降順に並び替える場合はascending引数をFalseにします。

import pandas as pd

df = pd.read_csv('test.csv', encoding='shift_jis')
df2 = df.sort_index(ascending=False)
print(df)
print(df2)
        Name  World  Japan
0    Windows  75.56  65.88
1       OS X  16.48  16.64
2  Chrome OS   2.09   0.51
3      Linux   1.97   1.34

        Name  World  Japan
3      Linux   1.97   1.34
2  Chrome OS   2.09   0.51
1       OS X  16.48  16.64
0    Windows  75.56  65.88

列の値で並び替える

列の値で並び替えるには、sort_values()メソッドを使用します。引数として、並び替えに使う列名を指定します。

import pandas as pd

df = pd.read_csv('test.csv', encoding='shift_jis')
df2 = df.sort_values('Japan', ascending=False)
print(df)
print(df2)
        Name  World  Japan
0    Windows  75.56  65.88
1       OS X  16.48  16.64
2  Chrome OS   2.09   0.51
3      Linux   1.97   1.34

        Name  World  Japan
0    Windows  75.56  65.88
1       OS X  16.48  16.64
3      Linux   1.97   1.34
2  Chrome OS   2.09   0.51

複数の列で並び替える場合には、列名のリストを引数に入れます。

公開日

広告