- 1 はじめに
- 2 検証環境
- 3 事前準備
- 4 csvファイルに対する操作
- 5 DataFrameの各種情報を取得する方法
- 6 DataFrameの行データを取得する方法
- 7 DataFrameの列データを取得する方法
- 8 DataFrameの基本統計量を取得する方法
- 9 フィルタリングする方法
- 10 DataFrameをソートする方法
- 11 DataFrameの値を置換する方法(replace)
- 12 行列の名前を変更する方法(rename)
- 13 欠損値の扱い方
- 14 日付に関する操作方法
- 15 DataFrameを結合する方法(merge)
- 16 その他
- Y 参考図書
- Z 参考情報
1 はじめに
pandasとは、データ分析用ライブラリです。pandasで利用できるデータは、表計算ソフトExcelで扱うような表形式のデータです。pandasを使うと、Excelなどのファイルから表形式のデータを読み込み、集計、データ抽出、グラフの表示などが行えます。
2 検証環境
AlmaLinux版数は以下のとおりです。
[root@server ~]# cat /etc/redhat-release AlmaLinux release 9.2 (Turquoise Kodkod)
カーネル版数は以下のとおりです。
[root@server ~]# uname -r 5.14.0-284.11.1.el9_2.x86_64
pythonの版数は以下のとおりです。
[root@server ~]# python -V Python 3.9.16
3 事前準備
スシの名前、価格、注文数を記録したcsvファイルを作成します。なお、ikaの値段は意図的に空欄にしています。
[root@server ~]# cat sushi.csv sushi,price,orders ikura,500,2 aji,400,4 uni,700,2 toro,800,4 ika,,2 saba,200,2 kohada,200,2
4 csvファイルに対する操作
4.1 csvファイルを読み込む方法(read_csv)
csvファイルを読み込むためには、read_csvメソッドを使用します。read_csvメソッドの引数には、csvファイルのパスを指定します。
読み込んだファイル(sushi.csv)を表示するテストプログラムを作成します。なお、テストプログラム中のdfはDataFrameを表しています。Pandasには2つの主要なデータ構造があって、Series(シリーズ)が1次元のデータ、DataFrame(データフレーム)が2次元のデータに対応しています。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df)
テストプログラムを実行すると、sushi.csvの中身が表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 0 ikura 500.0 2 1 aji 400.0 4 2 uni 700.0 2 3 toro 800.0 4 4 ika NaN 2 5 saba 200.0 2 6 kohada 200.0 2
4.2 csvファイルに書き込む方法(to_csv)
読み込んだファイル(sushi.csv)を/tmp直下に書き込むテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') df.to_csv('/tmp/sushi.csv')
テストプログラムを実行します。
[root@server ~]# ./test.py
/tmpにファイルが書き込まれたことがわかります。
[root@server ~]# cat /tmp/sushi.csv ,sushi,price,orders 0,ikura,500.0,2 1,aji,400.0,4 2,uni,700.0,2 3,toro,800.0,4 4,ika,,2 5,saba,200.0,2 6,kohada,200.0,2
次は、指定した列を/tmp直下のファイル(test.csv)に保存してみます。ここでは、sushi列のみをファイルに保存するテストぽプログラムを作成してみます。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') df.to_csv('/tmp/sushi.csv', columns=['sushi'])
テストプログラムを実行します。
[root@server ~]# ./test.py
テストプログラムを実行すると、sushi列がファイルに保存するされていることがわかります。
[root@server ~]# cat /tmp/sushi.csv ,sushi 0,ikura 1,aji 2,uni 3,toro 4,ika 5,saba 6,kohada
あと始末をします。
[root@server ~]# rm /tmp/sushi.csv
5 DataFrameの各種情報を取得する方法
5.1 DataFrameの要約情報を取得する方法(info)
infoメソッドは、DataFrameのデータ型やメモリ使用量などを表示するメソッドです。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.info())
テストプログラムを実行すると、DataFrameのデータ型やメモリ使用量が表示されていることがわかります。
[root@server ~]# ./test.py <class 'pandas.core.frame.DataFrame'> RangeIndex: 7 entries, 0 to 6 Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 sushi 7 non-null object 1 price 6 non-null float64 2 orders 7 non-null int64 dtypes: float64(1), int64(1), object(1) memory usage: 296.0+ bytes None
5.2 DataFrameの行数を求める方法(len)
len はPythonの組み込み関数であり、DataFrameの行数を返します。この関数には、シーケンス(文字列、バイト列、タプル、リスト、rangeなど)またはコレクション(辞書、集合、凍結集合など)を引数として渡します。
DataFrameの行数を求めるテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(len(df))
テストプログラムを実行すると、DataFrameの行数が7行であることがわかります。
[root@server ~]# ./test.py 7
5.3 DataFrameの列名を取得する方法(columns)
columnsはDataFrame の属性です。columns属性は、DataFrame内の列名を含むリストを返します。
CSVファイルからデータを読み込み、DataFrame内の列名を表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.columns)
テストプログラムを実行すると、列名を含むリストが表示されていることがわかります。
[root@server ~]# ./test.py Index(['sushi', 'price', 'orders'], dtype='object')
次は、DataFrameのカラム数を求めるテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(len(df.columns))
テストプログラムを実行すると、DataFrameのカラム数が3であることがわかります。
[root@server ~]# ./test.py 3
5.4 行数・列数を取得する方法(shape)
shape はpandasのDataFrameの属性です。DataFrameのshape 属性は、行数と列数を含むタプルを返します。このタプルの最初の要素は行数(行の数)であり、2番目の要素は列数(列の数)です。
CSVファイルからデータを読み込み、そのデータの行数と列数を表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.shape) print(df.shape[0]) print(df.shape[1])
テストプログラムを実行すると、読み込んだファイルの行数と列数が表示されていることがわかります。
[root@server ~]# ./test.py (7, 3) 7 3
6 DataFrameの行データを取得する方法
6.1 先頭から指定した行数を取り出す方法(head)
headはDataFrameの最初のいくつかの行を取得するたのメソッドです。headに引数を指定しないと、DataFrameの最初の5行を取得します。
DataFrameの先頭2行を表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.head(2))
テストプログラムを実行すると、DataFrameの先頭2行が表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 0 ikura 500.0 2 1 aji 400.0 4
6.2 末尾から指定した行数を取り出す方法(tail)
headはDataFrameの最後のいくつかの行を取得するたのメソッドです。
DataFrameの末尾1行を表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.tail(1))
テストプログラムを実行すると、DataFrameの末尾1行が表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 6 kohada 200.0 2
6.3 DataFrameの指定した行をまとめて取り出す方法(iloc)
DataFrameのindexが2から4までの行を取り出してみます。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.iloc[2:4])
テストプログラムを実行すると、DataFrameの2行目から4行目までの行が表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 2 uni 700.0 2 3 toro 800.0 4
7 DataFrameの列データを取得する方法
DataFrameのsushi列を表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df['sushi'])
テストプログラムを実行すると、DataFrameのsushi列が表示されていることがわかります。
[root@server ~]# ./test.py 0 ikura 1 aji 2 uni 3 toro 4 ika 5 saba 6 kohada Name: sushi, dtype: object
DataFrameのprice列を表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df['price'])
テストプログラムを実行すると、DataFrameのprice列が表示されていることがわかります。なお、ikaの価格は未設定なので、実行結果はNaNと表示されています。
[root@server ~]# ./test.py 0 500.0 1 400.0 2 700.0 3 800.0 4 NaN 5 200.0 6 200.0 Name: price, dtype: float64
8 DataFrameの基本統計量を取得する方法
8.1 列の最大値の取り出し方(max)
maxは、最大値を取得するSeriesの属性です。Seriesは、1次元のデータを表現するために使用するデータ構造です。
CSVファイルから寿司の価格データを読み込み、その価格(price列)の最大値を表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') series = df['price'] print(series.max())
テストプログラムを実行すると、価格の最大値は800円であることがわかります。
[root@server ~]# ./test.py 800.0
8.2 列の最小値の取り出し方(min)
minは、最小値を取得するSeriesの属性です。Seriesは、1次元のデータを表現するために使用するデータ構造です。
CSVファイルから寿司の価格データを読み込み、その価格(price列)の最小値を表示するテストプログラムを作成します。
200.0 [root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') series = df['price'] print(series.min())
テストプログラムを実行すると、価格の最小値が200円であることがわかります。
[root@server ~]# ./test.py 200.0
8.3 平均値求める方法(mean)
meanは、平均値を取得するSeriesの属性です。Seriesは、1次元のデータを表現するために使用するデータ構造です。
CSVファイルから寿司の価格データを読み込み、その価格(preice列)の平均値を表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') series = df['price'] print(series.mean())
テストプログラムを実行すると、価格の平均値が467円であることがわかります。
[root@server ~]# ./test.py 466.6666666666667
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') mean_price = (df['price']).mean() mean_orders = (df['orders']).mean() print("平均 price:", mean_price) print("平均 orders:", mean_orders)
[root@server ~]# ./test.py 平均 price: 466.6666666666667 平均 orders: 2.5714285714285716
8.4 ユニークな値を調べる方法(unique)
uniqueは、Series内のユニークな値(重複のない値)を抽出するメソッドです。
CSVファイルから寿司の価格データを読み込み、ユニークな値を表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.price.unique())
テストプログラムを実行すると、200円のスシはsabaとkohadaの2つありますが、1つにまとめられていることがわかります。
[root@server ~]# ./test.py [500. 400. 700. 800. nan 200.]
9 フィルタリングする方法
9.1 比較演算子で行を抽出する方法(query)
queryは条件を指定してDataFrameからデータを抽出するためのメソッドです。
price列が300円未満のスシを表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.query('price < 300'))
テストプログラムを実行すると、300円未満のスシが表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 5 saba 200.0 2 6 kohada 200.0 2
次に、price列が400円以上のスシを表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.query('not price < 400'))
テストプログラムを実行すると、400円以上のスシが表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 0 ikura 500.0 2 1 aji 400.0 4 2 uni 700.0 2 3 toro 800.0 4 4 ika NaN 2
9.2 完全一致によるフィルタリング方法
sushi列がikuraの行を抽出するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') raw = (df.sushi == 'ikura') print(df[raw])
テストプログラムを実行すると、ikuraの行が表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 0 ikura 500.0 2
price列が200円のスシを表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') raw = (df.price == 200) print(df[raw])
テストプログラムを実行すると、price列が200円のスシが表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 5 saba 200.0 2 6 kohada 200.0 2
10 DataFrameをソートする方法
10.1 昇順にソートする方法
DataFrameのprice列を昇順にソートテストプログラムを作成します。デフォルトは昇順でソートします。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.sort_values('price')
テストプログラムを実行すると、price列が昇順に表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 5 saba 200.0 2 6 kohada 200.0 2 1 aji 400.0 4 0 ikura 500.0 2 2 uni 700.0 2 3 toro 800.0 4 4 ika NaN 2
10.2 降順にソートする方法
DataFrameの価格(price)を降順にソートするテストプログラムを作成します。ascending=Falseを指定すると、降順にソートすることができます
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.sort_values('price', ascending=False))
テストプログラムを実行すると、価格が降順になっていることがわかります。
[root@server ~]# ./test.py sushi price orders 3 toro 800.0 4 2 uni 700.0 2 0 ikura 500.0 2 1 aji 400.0 4 5 saba 200.0 2 6 kohada 200.0 2 4 ika NaN 2
次に、DataFrameのsushi列を降順に並べるテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.sort_values('sushi', ascending=False))
テストプログラムを実行すると、sushi列がz->aの順で表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 2 uni 700.0 2 3 toro 800.0 4 5 saba 200.0 2 6 kohada 200.0 2 0 ikura 500.0 2 4 ika NaN 2 1 aji 400.0 4
11 DataFrameの値を置換する方法(replace)
replaceはSeriesやDataFrame内の値を指定した値で置換するためのメソッドです。
DataFrameのsushi列のtoroをohtoroに置換するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.replace('toro', 'ohtoro'))
テストプログラムを実行すると、toroがohtoroに置換されていることがわかります。
[root@server ~]# ./test.py sushi price orders 0 ikura 500.0 2 1 aji 400.0 4 2 uni 700.0 2 3 ohtoro 800.0 4 4 ika NaN 2 5 saba 200.0 2 6 kohada 200.0 2
12 行列の名前を変更する方法(rename)
renameは、DataFrameの列名や行ラベルを変更するためのメソッドです。
12.1 列の名前を変更する方法
DataFrameの列名をpriceからkakakに変更するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') df_new = df.rename(columns={'price':'kakaku'}) print(df_new)
テストプログラムを実行すると、priceがkakakuに変更されたことがわかります。
[root@server ~]# ./test.py sushi kakaku orders 0 ikura 500.0 2 1 aji 400.0 4 2 uni 700.0 2 3 toro 800.0 4 4 ika NaN 2 5 saba 200.0 2 6 kohada 200.0 2
次に、DataFrameの2つの列名、priceをkakaku、ordersをcyumonに変更してみます。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') df_new = df.rename(columns={'price':'kakaku','orders':'cyumon'}) print(df_new)
テストプログラムを実行すると、priceがkakaku、ordersがcyumonに変更されたことがわかります。
[root@server ~]# ./test.py sushi kakaku cyumon 0 ikura 500.0 2 1 aji 400.0 4 2 uni 700.0 2 3 toro 800.0 4 4 ika NaN 2 5 saba 200.0 2 6 kohada 200.0 2
13 欠損値の扱い方
欠損値(NaN)の扱うメソッドに、isnull,dropna,fillna,notnullがあります。各メソッドについて動作確認をしてみます。
13.1 欠損値を判定する方法(isnull)
isnullは、各要素に対して判定を行い、欠損値(NaN)であればTrue、欠損値でなければFalseと判定します。
要素が欠損値ならTrue、欠損値でなければFalseを表示するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.isnull())
テストプログラムを実行すると、ikaの価格は欠損しているため、Trueと表示されていることがわかります。
[root@server ~]# ./test.py sushi price orders 0 False False False 1 False False False 2 False False False 3 False False False 4 False True False 5 False False False 6 False False False
13.2 欠損値を削除する方法(dropna)
dropnaは、指定した条件に合致するデータ列に欠損値(NaN)が存在するかどうかをチェックし、条件を満たす場合にそのデータ列を削除するメソッドです。
欠損値(NaN)が存在するデータ列を削除するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') print(df.dropna())
テストプログラムを実行すると、欠損値が含まれるikaの行が削除されたことがわかります。
[root@server ~]# ./test.py sushi price orders 0 ikura 500.0 2 1 aji 400.0 4 2 uni 700.0 2 3 toro 800.0 4 5 saba 200.0 2 6 kohada 200.0 2
13.3 列の欠損値を補完する方法(fillna)
fillnaは欠損値を任意の値で穴埋めするメソッドです。ここでは、ikaの価格(欠損値)を平均値で補完してみます。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('sushi.csv') series = df['price'] mean = series.mean() filled = series.fillna(mean) print(filled)
テストプログラムを実行すると、ikaの価格が平均値(466.666667)で補完されていることがわかります。
[root@server ~]# ./test.py 0 500.000000 1 400.000000 2 700.000000 3 800.000000 4 466.666667 5 200.000000 6 200.000000 Name: price, dtype: float64
14 日付に関する操作方法
テストプログラムが読み込みファイルを作成します。
[root@server ~]# cat date.csv id,date,order 01,2021-08-01,3 02,2021-08-10,2 03,2021-09-10,1 04,2021-10-11,4 04,2021-10-20,5
14.1 object型からdatetime64型に変換する方法(to_datetime)
to_datetimeは日付と時刻のデータをdatetimeオブジェクトに変換するためのメソッドです。
date列の型を確認するテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df=pd.read_csv('date.csv') print(df.dtypes)
date列はobject型であることがわかります。
[root@server ~]# ./test.py id int64 date object order int64 dtype: object
次に、object型からdatetime64型に変換してみます。datetime64型に変換することで、例えば年だけを取得したい、月だけを取得したいということができます
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('date.csv') df["date"] = pd.to_datetime(df["date"]) print(df.dtypes)
date列がobject型からdatetime64型に変換されたことがわかります。
[root@server ~]# ./test.py id int64 date datetime64[ns] order int64 dtype: object
14.2 列を任意のフォーマットに一括変換する方法(strftime)
dt.strftimeは、列を任意のフォーマットの文字列に一括変換する関数です。%mで月のフォーマットを指定しています。年月の場合は%Y%mと指定します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df=pd.read_csv('date.csv') df['date']=pd.to_datetime(df['date']) df['month']=df['date'].dt.strftime('%m') print(df)
年月日から月に変換されたmonth列が追加されたことがわかります。
[root@server ~]# ./test.py id date order month 0 1 2021-08-01 3 08 1 2 2021-08-10 2 08 2 3 2021-09-10 1 09 3 4 2021-10-11 4 10 4 4 2021-10-20 5 10
14.3 グルーピングする方法(groupby)
データをグルーピングして、グループごとにデータを集約して、それぞれの合計/最大/最小等の統計量を算出したりすることができます。
まず、注文数について、月単位の合計数を求めてみます。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df = pd.read_csv('date.csv') df['date'] = pd.to_datetime(df['date']) df['month'] = df['date'].dt.strftime('%Y-%m') monthly_orders = df.groupby('month')['order'].sum() print(monthly_orders)
注文数が、8月は5、9月は1、10月は9であることがわかります。
[root@server ~]# ./test.py month 2021-08 5 2021-09 1 2021-10 9 Name: order, dtype: int64
次に、各月の一番多い注文数を求めるテストプログラムを作成します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd df=pd.read_csv('date.csv') df['date']=pd.to_datetime(df['date']) df['month']=df['date'].dt.strftime('%m') print(df.groupby('month').max()['order'])
各月の注文の最大数は、8月は3、9月は1、10月は5であることがわかります。
[root@server ~]# ./test.py month 08 3 09 1 10 5 Name: order, dtype: int64
15 DataFrameを結合する方法(merge)
mergeはpandasライブラリのデータ結合操作を行うためのメソッドです。mergeメソッドを使用することで、異なるDataFrameオブジェクトのデータを共通のキー(列)に基づいて結合し、新しいDataFrameを生成できます。
名前と国語の点数を記録したkokugo.csvを作成します。
[root@server ~]# cat kokugo.csv name,kokugo kato,70 suzuki,80 tanaka,60
名前と算数の点数を記録したsansu.csvを作成します。
[root@server ~]# cat sansu.csv name,sansu kato,50 suzuki,70 tanaka,90
kokugo.csvとsansu.csvを結合するテストプログラムを作成します。共通する列をonに指定することで、紐づく値を軸に結合することができます。howでkokugoとsansuのどちらを主軸にするかを指定します。今回は、kokugoにsansuを結合するので、how='left'と指定します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd kokugo = pd.read_csv('kokugo.csv') sansu = pd.read_csv('sansu.csv') print(pd.merge(kokugo,sansu, on='name', how='left'))
kokugo.csvとsansu.csvに共通のキー(nama)で結合されていることがわかります。
[root@server ~]# ./test.py name kokugo sansu 0 kato 70 50 1 suzuki 80 70 2 tanaka 60 90
16 その他
16.1 複数ファイルを読み込む方法
テストプログラムが読み込むファイルを作成します。
[root@server ~]# cat data1.csv name,age suzuki,40 kato,50
テストプログラムが読み込むファイルを作成します。
[root@server ~]# cat data2.csv name,age tanaka,30 itakahashi,20
テストプログラムを作成します。
globはPythonの組み込みライブラリです。指定したパターンに一致するファイルやディレクトリのリストを取得するために使用します。
[root@server ~]# cat test.py #!/usr/bin/python3 import pandas as pd import glob all_files=glob.glob('/root/data[0-9].csv') li = [] for filename in all_files: df = pd.read_csv(filename, delimiter=",") li.append(df) frame = pd.concat(li, ignore_index=True) print(frame)
テストプログラムを実行すると、
[root@server ~]# ./test.py name age 0 tanaka 30 1 itakahashi 20 2 suzuki 40 3 kato 50
Y 参考図書
TECHNICAL MASTER はじめてのAlmaLinux 9 & Rocky Linux 9 Linuxサーバエンジニア入門編
Z 参考情報
私が業務や記事執筆で参考にした書籍を以下のページに記載します。
Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ
記事作成に参考にした書籍です。
- Pythonコードレシピ集
サンプルコードが短く、分かりやすいです。
Pythonコードレシピ集(Kindle版)
- スッキリわかるPython入門 (スッキリわかる入門シリーズ)
簡潔な説明で分かりやすいです。
スッキリわかるPython入門 (スッキリわかる入門シリーズ)(単行本)
スッキリわかるPython入門 (スッキリわかるシリーズ)(Kindle版)