ラベル pandas の投稿を表示しています。 すべての投稿を表示
ラベル pandas の投稿を表示しています。 すべての投稿を表示

2022年5月15日日曜日

【pandas】value_countによる出現頻度の算出

 データ分析用ライブラリpandasの1次元のデータ構造Seriesと2次元のデータ構造Dataframeについて、要素の出現回数を算出するにはvalue_countを用いる。

 ライブラリpandasを使うにはインポートが必要。通常次のようにpdと略されてインポートされる。

import pandas as pd



1. value_countによるSeriesの並べ替え

 Series.value_count()の書式は以下の通り。

Series.value_counts(normalize=False, 
                    sort=True, 
                    ascending=False, 
                    bins=None, 
                    dropna=True)

引数 意味
normalize 頻度を正規化(合計1に)するか。デフォルトはFalse
sort 頻度順に並べるか。デフォルトはTrue
ascending 昇順に並べるか。デフォルトはFalse
bins 区画幅の指定。デフォルトはFalse
dropna NaNを含めない。デフォルトはTrue


 引数を指定しない場合。各要素が頻度の多い順に並べられ出現回数がカウントされる。ser.value_counts()Series型。

import pandas as pd

ser = pd.Series([7, 5, 8, 2, 4, 7, 8, 8, 2, 2, 3, 8])
print(ser.value_counts())

 実行結果

8    4
2    3
7    2
5    1
4    1
3    1
dtype: int64


 normalize=Trueの場合。頻度が正規化される。

import pandas as pd

ser = pd.Series([7, 5, 8, 2, 4, 7, 8, 8, 2, 2, 3, 8])
print(ser.value_counts(normalize=True))

 実行結果

8    0.333333
2    0.250000
7    0.166667
5    0.083333
4    0.083333
3    0.083333
dtype: float64


 sort=Falseの場合。出現回数順にソートされない。

import pandas as pd

ser = pd.Series([7, 5, 8, 2, 4, 7, 8, 8, 2, 2, 3, 8])
print(ser.value_counts(sort=False))

 実行結果

7    2
5    1
8    4
2    3
4    1
3    1
dtype: int64


 ascending=Trueの場合。頻度の昇順(少ない順)に並べられる。

import pandas as pd

ser = pd.Series([7, 5, 8, 2, 4, 7, 8, 8, 2, 2, 3, 8])
print(ser.value_counts(ascending=True))

 実行結果

5    1
4    1
3    1
7    2
2    3
8    4
dtype: int64


 binsを指定する場合。要素が数字の場合に指定した区間数にグループ化され、グループ毎の出現回数が求まる。
bins=3を指定する例。3区間に分けられる。

import pandas as pd

ser = pd.Series([7, 5, 8, 2, 4, 7, 8, 8, 2, 2, 3, 8])
print(ser.value_counts(bins=3))

 実行結果

(6.0, 8.0]      6
(1.993, 4.0]    5
(4.0, 6.0]      1
dtype: int64


2. value_countによるDataframeの並べ替え

 Dataframeで要素の出現回数を求める場合もvalue_countsを用いる。

Dataframe.value_count()の書式は以下の通り。

Dataframe.value_counts(subset=None,
                       normalize=False, 
                       sort=True, 
                       ascending=False, 
                       dropna=True)

引数 意味
subset カウントするColumnsの指定。デフォルトはNone
normalize 頻度を正規化(合計1に)するか。デフォルトはFalse
sort 頻度順に並べるか。デフォルトはTrue
ascending 昇順に並べるか。デフォルトはFalse
dropna NaNを含めない。デフォルトはTrue


 引数を指定しない場合。2つのColumnsの組み合わせの出現回数が求められる。

df = pd.DataFrame(
    data = [['赤', '野菜'], 
            ['緑', '野菜'],
            ['赤', '果物'],
            ['黄', '果物'],
            ['緑', '野菜']],
    columns = ['色', '種類'],
    index = ['トマト', 'きゅうり', 'イチゴ', 'バナナ', 'キャベツ']
    )

print(df.value_counts())

 実行結果

色  種類
緑  野菜    2
赤  果物    1
   野菜    1
黄  果物    1
dtype: int64


 Columnsを指定する場合。指定した列の要素の出現回数が求まる。

df = pd.DataFrame(
    data = [['赤', '野菜'], 
            ['緑', '野菜'],
            ['赤', '果物'],
            ['黄', '果物'],
            ['緑', '野菜']],
    columns = ['色', '種類'],
    index = ['トマト', 'きゅうり', 'イチゴ', 'バナナ', 'キャベツ']
    )

print(df.value_counts(subset='種類'))

 実行結果

種類
野菜    3
果物    2
dtype: int64


3. リファレンス

pandas > pandas.Series.value_counts
pandas > pandas.DataFrame.value_counts

使用したバージョン:Python 3.8.12/pandas 1.4.0

2022年4月24日日曜日

【pandas】Seriesによるシリーズの作成

 データ分析用ライブラリpandasには1次元のデータ構造Series(シリーズ)と2次元のデータ構造Dataframe(データフレーム)の2種類のデータ構造がある。Series(シリーズ)の作成にはpandas.Seriesを用いる。

 ライブラリpandasを使うにはインポートが必要。通常次のようにpdと略されてインポートされる。

import pandas as pd


1. 書式

 pandas.Seriesの書式は以下の通り。

pandas.Series(data=None, index=None, dtype=None, name=None, copy=False)
引数 意味
data 用いるデータ。ndarray、イテラブルオブジェクト、辞書、データフレームなど
index ロウ名(行名)。データにロウ名がない場合、必要に応じて指定する。指定が無ければ0からの数字の列(0, 1, 2・・・)が用いられる。
dtype データタイプの指定
name シリーズ名の指定。文字列または数値
copy 入力データからコピーするかどうか。入力データがndarrayまたはseriesの場合に影響する。
Falseの場合参照渡しとなる。Trueの場合コピーを作成し参照渡しとならない。


2. シリーズの作成

 pd.Seriesで引数にデータを与えるとデータシリーズを作成できる。データの形式としてはリスト、タプル、ndarray、辞書、データシリーズなどを用いることができる。
 データとして1行のリストを与えた場合。indexは与えていないため、行名は0からの連番の数字になる。

import pandas as pd

ser = pd.Series([204128, 136000, 20968, 54130])
print(ser)

実行結果

0    204128
1    136000
2     20968
3     54130
dtype: int64


 行名を指定する場合、indexを与える。

import pandas as pd

ser = pd.Series(data=[204128, 136000, 20968, 54130], 
                index=['USA', 'China', 'Russia', 'Japan'])
print(ser)

実行結果

USA       204128
China     136000
Russia     20968
Japan      54130
dtype: int64


 nameでシリーズに名前が付けられる。

import pandas as pd

ser = pd.Series(data=[204128, 136000, 20968, 54130], 
                index=['USA', 'China', 'Russia', 'Japan'],
                name='GDP')
print(ser)

実行結果

USA       204128
China     136000
Russia     20968
Japan      54130
Name: GDP, dtype: int64


 キーと値からなる辞書型データを用いるとキーが行名となる。

import pandas as pd

gdp = {'USA':204128, 'China':136000, 'Russia':20968, 'Japan':54130}
ser = pd.Series(gdp, name='GDP')
print(ser)

実行結果

USA       204128
China     136000
Russia     20968
Japan      54130
Name: GDP, dtype: int64


 入力データがnumpy.nearraySeriesの場合、copyを指定しないとデフォルトのcopy=Falseとなる。この場合参照渡しとなるため、元のデータの変更がSeriesのデータに反映される。

import numpy as np
import pandas as pd

gdp = np.array([204128, 136000, 20968, 54130])
country = ['USA', 'China', 'Russia', 'Japan']
ser = pd.Series(data=gdp, 
                index=country,
                name='GDP')

gdp[0] = 355555
print(ser)

実行結果

USA       355555
China     136000
Russia     20968
Japan      54130
Name: GDP, dtype: int32


 copy=Trueとすると、データのコピーが作成されるため、元データの変更がSeriesに反映されなくなる。

import numpy as np
import pandas as pd

gdp = np.array([204128, 136000, 20968, 54130])
country = ['USA', 'China', 'Russia', 'Japan']
ser = pd.Series(data=gdp, 
                index=country,
                name='GDP',
                copy=True)

gdp[0] = 355555
print(ser)

実行結果

USA       204128
China     136000
Russia     20968
Japan      54130
Name: GDP, dtype: int32


3. リファレンス

pandas > pandas.Series

使用したバージョン:Python 3.8.12/pandas 1.4.0

2021年10月31日日曜日

【pandas】DataFrameによるデータフレームの作成

 データ分析用ライブラリpandasでは1次元のデータ構造Series(シリーズ)と2次元のテーブル型データ構造Dataframe(データフレーム)を用いる。データフレームの作成にはpd.DataFrameを用いる。

 ライブラリpandasを使うにはインポートが必要。通常次のようにpdと略されてインポートされる。

import pandas as pd


1. pandas.DataFrameの書式

 pandas.DataFrameの書式は以下の通り。

pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)
引数 意味
data 用いるデータ。ndarray、イテラブルオブジェクト、辞書、データフレームなど
index ロウ名(行名)。データにロウ名がない場合、必要に応じて指定する。指定が無ければ0からの数字の列(0, 1, 2・・・)が用いられる。
columns カラム名(列名)。データにカラム名がない場合、必要に応じて指定する。指定が無ければ0からの数字の列(0, 1, 2・・・)が用いられる。
dtype データタイプの指定
copy 入力データからコピーするかどうか


2. データフレームの作成

 pd.DataFrameで引数にデータを与えるとデータフレームを作成できる。データの形式としてはndarray、イテラブルオブジェクト、辞書、データフレームなどを用いることができる。
 データとして3行3列のリストを与えた場合。行名、列名は与えていないので0からの連番の数字になる。

import pandas as pd

df = pd.DataFrame(data = [[25, 165, 65], [45, 178, 80], [32, 183, 72]])
print(df)

実行結果

   0   1  2
0 25 165 65
1 45 178 80
2 32 183 72


 列名を指定する場合、columnsを与える。

import pandas as pd

df = pd.DataFrame(data = [[25, 165, 65], [45, 178, 80], [32, 183, 72]],
                  columns = ['age', 'toll', 'weight'])
print(df)

実行結果

  age toll weight
0  25  165     65
1  45  178     80
2  32  183     72


 行名を指定する場合、indexを与える。

import pandas as pd

df = pd.DataFrame(data = [[25, 165, 65], [45, 178, 80], [32, 183, 72]],
                  index = ['Jane', 'Bob', 'Mike'])
print(df)

実行結果

      0   1  2
Jane 25	165 65
Bob  45	178 80
Mike 32	183 72


 キーと値からなる辞書型データを用いるとキーが列名となる。

import pandas as pd

df = pd.DataFrame({'age': [25, 165, 65], 'toll': [45, 178, 80], 'weight': [32, 183, 72]},
                 index = ['Jane', 'Bob', 'Mike'])
print(df)

実行結果

      age toll weight
Jane   25   45     32
Bob   165  178    183
Mike   65   80     72


 pd.DataFrameのデータは省略可能。その場合は空のデータフレームが作成される。

import pandas as pd

df = pd.DataFrame()
print(df)

実行結果




3. リファレンス

pandas > pandas.DataFrame

使用したバージョン:Python 3.8.8/pandas 1.2.4

2021年8月5日木曜日

【pandas】sort_valuesによるデータフレームのソート

 データ分析用ライブラリpandasのデータフレームをソートする方法を説明する。データフレームをソートするにはsort_valuesを用いる。

 ライブラリpandasを使うにはインポートが必要。通常次のようにpdと略されてインポートされる。

import pandas as pd


1. sort_valuesの書式

 sort_valuesの書式は以下の通り。

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, 
                      kind='quicksort', na_position='last', 
                      ignore_index=False, key=None)

bycolumnindexを指定するとその値でソートされる。ascendingはデフォルトがTrue。指定しないと昇順(小さい方から順番)に並べられる。Falseを指定すると降順(大きい方から順番)に並べられる。



2. データフレームのソートの例

 次のデータフレームをソートする場合。

import pandas as pd

data = [[25, 165, 65], [45, 178, 80], [32, 183, 72]]
name = ['Jane', 'Bob', 'Mike']
property = ['age', 'toll', 'weight']

df = pd.DataFrame(data=data, columns=property, index=name)
df

実行結果

      age  height  weight
Jane   25     165      65 
Bob    45     178      80 
Mike   32     183      72 


 columnindex'age'をbyに指定した場合。'age'の値でソートされる。ascendingは指定せずデフォルトのTrueのため昇順に並べられる。

df.sort_values(by=['age'])

実行結果

      age  height  weight
Jane   25     165      65 
Mike   32     183      72 
Bob    45     178      80 


 ascendingFalseを指定すると降順に並べられる。

df.sort_values(by=['age'], ascending=False))

実行結果

      age  height  weight
Bob    45     178      80 
Mike   32     183      72 
Jane   25     165      65 


 byに複数のindexを指定すると、一つ目のindexでソートされ、一つ目のindexが同じ値の場合に二つ目のindexでソートされる。
次のデータフレームをソートする場合。

import pandas as pd

data = [[25, 165, 65], [45, 178, 80], [32, 183, 72], [25, 162, 68], [33, 178, 69]]
name = ['Jane', 'Bob', 'Mike', 'Lisa', 'Ken']
property = ['age', 'toll', 'weight']

df = pd.DataFrame(data=data, columns=property, index=name)
df

実行結果

      age  height  weight
Jane   25     165      65 
Bob    45     178      80 
Mike   32     183      72 
Lisa   25     162      68
Ken    33     178      69


 一つ目のindexに'age'、二つ目のindexに'toll'を指定した場合

df.sort_values(by=['age', 'toll'])

実行結果

      age  height  weight
Lisa   25     162      68
Jane   25     165      65 
Mike   32     183      72 
Ken    33     178      69
Bob    45     178      80 


 一つ目のindexに'toll'、二つ目のindexに'age'を指定した場合

df.sort_values(by=['age', 'toll'])

実行結果

      age  height  weight
Lisa   25     162      68
Jane   25     165      65 
Ken    33     178      69
Bob    45     178      80 
Mike   32     183      72 


3. リファレンス

pandas > pandas.DataFrame.sort_value

使用したバージョン:Python 3.8.8/pandas 1.2.4

2020年5月25日月曜日

【pandas】describeによるデータフレームの統計量算出

 データ分析用ライブラリpandasのデータフレームに対する平均、標準偏差などの統計量の求めかたを説明する。

 ライブラリpandasを使うにはインポートが必要。通常次のようにpdと略されてインポートされる。

import pandas as pd


1. describeによる統計量算出

 pandas.DataFrame.describeを用いるとデータフレームについて以下の統計量が取得できる。

項目 定義 個別のメソッド
count データ数 count
mean 平均 mean
std 標準偏差 std
min 最小値 min
25% 25パーセンタイル
50% 50パーセンタイル・中央値
75% 75パーセンタイル
max 最大値 max


import pandas as pd

data = [[176, 82], [162, 53], [182, 87], [169, 59], [174, 75]]
index = ['John', 'Tom', 'Ken', 'Keith', 'Andy']
columns = ['身長', '体重']
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df.describe())

実行結果

             身長       体重
count    5.000000   5.000000 
 mean  172.600000  71.200000 
  std    7.536577  14.669697 
  min  162.000000  53.000000 
  25%  169.000000  59.000000 
  50%  174.000000  75.000000 
  75%  176.000000  82.000000 
  max  182.000000  87.000000 


2. 項目別の統計量算出

 上表に示すそれぞれの統計量についてのメソッドを使うことで項目別の統計量が取得できる。

import pandas as pd

data = [[176, 82], [162, 53], [182, 87], [169, 59], [174, 75]]
index = ['John', 'Tom', 'Ken', 'Keith', 'Andy']
columns = ['身長', '体重']
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df.min())

実行結果

身長    162
体重     53
dtype: int64


 データフレームのカラムを指定すれば特定のカラムについての統計量のみ取得できる。

import pandas as pd

data = [[176, 82], [162, 53], [182, 87], [169, 59], [174, 75]]
index = ['John', 'Tom', 'Ken', 'Keith', 'Andy']
columns = ['身長', '体重']
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df['身長'].min())

実行結果

162


3. 相関係数の算出

 データフレームのcolumns間の相関係数を求めるにはcorrを用いる。

import pandas as pd

data = [[176, 82], [162, 53], [182, 87], [169, 59], [174, 75]]
index = ['John', 'Tom', 'Ken', 'Keith', 'Andy']
columns = ['身長', '体重']
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df.corr())

実行結果

         身長     体重
身長  1.00000  0.96645 
体重  0.96645  1.00000 


 相関係数を算出する場合、グラフ描画ライブラリmatplotlibにより散布図を一緒に表示すると分かりやすい。
散布図の作成方法についてはこちら(【matplotlib】散布図の作成と体裁の変更)。

import pandas as pd
import matplotlib.pyplot as plt

data = [[176, 82], [162, 53], [182, 87], [169, 59], [174, 75]]
index = ['John', 'Tom', 'Ken', 'Keith', 'Andy']
columns = ['身長', '体重']
df = pd.DataFrame(data=data, index=index, columns=columns)

print(df.corr())

plt.scatter(df['身長'], df['体重'])
plt.show()

実行結果

         身長     体重
身長  1.00000  0.96645 
体重  0.96645  1.00000 



4. リファレンス

pandas > pandas.DataFrame.describe
pandas > pandas.DataFrame.count
pandas > pandas.DataFrame.min
pandas > pandas.DataFrame.max
pandas > pandas.DataFrame.mean
pandas > pandas.DataFrame.std

使用したバージョン:Python 3.7.0/pandas 1.0.3

2020年5月9日土曜日

【pandas】データフレームの行・列の追加、削除

 データ分析用ライブラリpandasはPythonでデータ分析を行う際に一般的に用いられるライブラリ。pandasではエクセルのような行と列からなる表構造をしたデータフレームオブジェクトを操作しデータ分析を行う。データフレームに行・列を追加する方法、データフレームから行・列を削除する方法を説明する。

 ライブラリpandasを使うにはインポートが必要。通常次のようにpdと略されてインポートされる。

import pandas as pd


1. データフレームへ行を追加

 次のデータフレームに行を追加する場合。

import pandas as pd

data = [[25, 165, 65], [45, 178, 80], [32, 183, 72]]
name = ['Jane', 'Bob', 'Mike']
property = ['age', 'toll', 'weight']

df = pd.DataFrame(data=data, columns=property, index=name)
print(df)

実行結果

      age  height  weight
Jane   25     165      65 
Bob    45     178      80 
Mike   32     183      72 


 pandas.DataFrame.locでインデックス名とデータを与えることで行が追加される。

df.loc['Anna'] =  [38, 155, 49]
print(df)

実行結果

      age  height  weight
Jane   25     165      65 
Bob    45     178      80 
Mike   32     183      72 
Anna   38     155      49 


2. データフレームへ列を追加

 次のデータフレームに列を追加する場合。

import pandas as pd

data = [[25, 165, 65], [45, 178, 80], [32, 183, 72]]
name = ['Jane', 'Bob', 'Mike']
property = ['age', 'toll', 'weight']

df = pd.DataFrame(data=data, columns=property, index=name)
print(df)

実行結果

      age  height  weight
Jane   25     165      65 
Bob    45     178      80 
Mike   32     183      72 


 データフレームに新しいcolumn名を指定し、データを与えることで列が追加される。

df['blood-type'] = ['A', 'O', 'B']
print(df)

実行結果

      age  height  weight  blood-type
Jane   25     165      65           A
Bob    45     178      80           O 
Mike   32     183      72           B


3. データフレームから行を削除

 次のデータフレームから行を削除する場合。

import pandas as pd

data = [[25, 165, 65], [45, 178, 80], [32, 183, 72]]
name = ['Jane', 'Bob', 'Mike']
property = ['age', 'toll', 'weight']

df = pd.DataFrame(data=data, columns=property, index=name)
print(df)

実行結果

      age  height  weight
Jane   25     165      65 
Bob    45     178      80 
Mike   32     183      72 


 pandas.DataFrame.dropでIndex名を指定することで行が削除される。axis=0は行・列の内、行を指定しているがデフォルトがaxis=0なので省略可能。pandas.DataFrame.dropは非破壊なので削除した結果を保持する場合は別のデータフレームに代入する。
 データフレームdfからindex'Mike'を削除した新しいデータフレームdf_dropを作成する場合。

df_drop = df.drop('Mike', axis=0)
print(df_drop)

実行結果

      age  height  weight  blood-type
Jane   25     165      65           A
Bob    45     178      80           O 


4. データフレームから列を削除

次のデータフレームから列を削除する場合。

import pandas as pd

data = [[25, 165, 65], [45, 178, 80], [32, 183, 72]]
name = ['Jane', 'Bob', 'Mike']
property = ['age', 'toll', 'weight']

df = pd.DataFrame(data=data, columns=property, index=name)
print(df)

実行結果

      age  height  weight
Jane   25     165      65 
Bob    45     178      80 
Mike   32     183      72 


 行の削除同様pandas.DataFrame.dropを用いる。columnを指定し、axis=1とすることで列の削除が可能。pandas.DataFrame.dropは非破壊なので削除した結果を保持する場合は別のデータフレームに代入する。
 データフレームdfからcolumn'weight'を削除した新しいデータフレームdf_dropを作成する場合。

df_drop = df.drop('weight', axis=1)
print(df_drop)

実行結果

      age  height
Jane   25     165
Bob    45     178
Mike   32     183


5. リファレンス

pandas > pandas.DataFrame.loc

使用したバージョン:Python 3.7.0/pandas 1.0.3

2020年4月19日日曜日

【pandas】テキスト・csv・エクセルファイルの読み込み

 データ分析用ライブラリpandasはPythonでデータ分析を行う際に一般的に用いられるライブラリ。pandasでは表構造をしたデータフレームオブジェクトを操作しデータ分析を行う。この記事ではテキストファイル、csvファイル、エクセルファイルなどの外部ファイルを読み込んでデータフレームに変換する方法を解説する。

ライブラリpandasを使うにはインポートが必要。通常次のようにpdという名前でインポートされる。

import pandas as pd


1. テキストファイルの読み込み

 各項目がカンマで区切られた次のテキストファイル'table.txt'を読み出す場合。

country,area,population,GDP
USA,9628000,327830000,204128
China,9634057,1395380000,136000
Russia,17098246,146804400,20968
Japan,377975,126160000,54130


 テキストファイル読み込みにはread_tableを用いる。区切り文字','を引数sepで指定する。

import pandas as pd

df = pd.read_table('table.txt', sep=',')
print(df)

実行結果

   country     area  population    GDP
0      USA  9628000   327830000 204128 
1    China  9634057  1395380000 136000  
2   Russia 17098246   146804400  20968  
3    Japan   377975   126160000  54130 


 次のファイル(table.txt)のように日本語が含まれる場合も、Pythonの標準文字コードであるUTF-8で保存されていれば問題なく読み出せる。

国,面積,人口,GDP
アメリカ,9628000,327830000,204128
中国,9634057,1395380000,136000
ロシア,17098246,146804400,20968
日本,377975,126160000,54130


import pandas as pd

df = pd.read_table('table.txt', sep=',')
print(df)

実行結果

        国     面積        人口    GDP
0 アメリカ  9628000   327830000 204128 
1     中国  9634057  1395380000 136000  
2   ロシア 17098246   146804400  20968  
3     日本   377975   126160000  54130 


 UTF-8以外の文字コードで保存されたテキストファイルを読み出すとエラーになる場合がある。

import pandas as pd

df = pd.read_table('table.txt', sep=',')
print(df)

実行結果

'utf-8' codec can't decode byte 0x8d in position 0: invalid start byte


 これを回避するにはencoding='SHIFT-JIS'またはencoding='cp932'とエンコードを与えるかengine='python'としてエンコードエンジンを指定する(デフォルトはengine='c')。

encoding='SHIFT-JIS'を指定した場合。

import pandas as pd

df = pd.read_table('table.txt', sep=',' encoding='SHIFT-JIS')
print(df)

実行結果

        国     面積        人口    GDP
0 アメリカ  9628000   327830000 204128 
1     中国  9634057  1395380000 136000  
2   ロシア 17098246   146804400  20968  
3     日本   377975   126160000  54130 


encoding='cp932'を指定した場合。

import pandas as pd

df = pd.read_table('table.txt', sep=',' encoding='cp932')
print(df)

実行結果

        国     面積        人口    GDP
0 アメリカ  9628000   327830000 204128 
1     中国  9634057  1395380000 136000  
2   ロシア 17098246   146804400  20968  
3     日本   377975   126160000  54130 


engine='python'を指定した場合。

import pandas as pd

df = pd.read_table('table.txt', sep=',' engine='python')
print(df)

実行結果

        国     面積        人口    GDP
0 アメリカ  9628000   327830000 204128 
1     中国  9634057  1395380000 136000  
2   ロシア 17098246   146804400  20968  
3     日本   377975   126160000  54130 


2. CSVファイルの読み込み

 CSVファイルの読み出しにはread_csvを用いる。

 次のCSVファイル'table.csv'を読み出す場合。

country,area,population,GDP
USA,9628000,327830000,204128
China,9634057,1395380000,136000
Russia,17098246,146804400,20968
Japan,377975,126160000,54130


import pandas as pd

df = pd.read_csv('table.csv')
print(df)  

実行結果

   country     area  population    GDP
0      USA  9628000   327830000 204128 
1    China  9634057  1395380000 136000  
2   Russia 17098246   146804400  20968  
3    Japan   377975   126160000  54130 


 日本語が使われたファイルの読み出しでエンコードエラーが出る場合はテキストファイルの場合同様、encoding='SHIFT-JIS'またはencoding='cp932'とエンコードを与えるかengine='python'としてエンコードエンジンを指定する。



3. エクセルファイルの読み込み

 エクセルファイルの読み込みにはread_excelを用いる。

import pandas as pd

df = pd.read_excel('table.xlsx')
print(df)

実行結果

        国     面積        人口    GDP
0 アメリカ  9628000   327830000 204128 
1     中国  9634057  1395380000 136000  
2   ロシア 17098246   146804400  20968  
3     日本   377975   126160000  54130 


4. リファレンス

pandas > pandas.read_table
pandas > pandas.read_csv
pandas > pandas.read_excel

使用したバージョン:Python 3.7.0/pandas 1.0.3