Python | Pandasの基礎 (“Series”, “DataFrame”, CSVファイルの利用)

2024年1月6日

Pythonとは,高レベルの汎用プログラミング言語であり,読みやすさとシンプルさで知られている.Web開発やデータサイエンス,人口知能,機械学習など幅広く利用されている.なお,レベルの高低はハードウェアに近いかどうかを意味しており,レベルが低いとハードウェアに近いことを意味している.

Pandasとは,Python向けに人気のあるオープンソースのデータ操作および分析ライブラリーである.異なるフォーマットでの読み書きするツールに加えて,効率的にデータ保存および大規模なデータセットを操作するためのデータ構造を提供する.

本記事では,Pandasの基礎の2つの"class"である一次元データを利用する"Series"と二次元データを利用する"DataFrame", そして"CSVファイルの読み込み・書き込み"を記す.

  • Series
  • DataFrame
  • CSVファイルの読み込み・書き込み

pandas | User Guide | 10 minutes to pandas

実施環境

各バージョンの確認方法はこちら

OS: Windows11
VS Code: 1.85.1
Python 3.12.0
Pandas 2.1.4
Numpy 1.26.2

事前準備

Pandasを利用する際,必要であれば,以下コマンドを実行する.

$ pip install pandas

Series

“Series"とは,任意の一次元データを保持できるクラスである.Excelの列やデータベーステーブルの単一の列に似ている.

pandas | pandas.Series

一次元データの出力

Pyファイルに以下を入力し,実行する.

import pandas as pd

# Creating a Series
s = pd.Series([1, 3, 5, 6, 8])

# Displaying the Series
print(s)

■実行結果

0    1
1    3
2    5
3    6
4    8
dtype: int64

NaNを含むデータの出力

Pyファイルに以下を入力し,実行する.

import pandas as pd
import numpy as np

# Creating a Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])

# Displaying the Series
print(s)

※上記コードにて,NaN(Not a Number: 非数)を表示するには,以下を実施し"np.npn"を利用する必要がある.0/0のように,計算結果が存在しない際にNaNが利用される.

import numpy as np

■実行結果

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

データタイプ(“dtype")の出力

以下では,"s"にデータが格納されている.print(s.dtype)を実行することで"s"に格納されているデータのタイプを出力できる.

pandas | User Guide | Essential basic functionality | dtype

なお,"dtype"の詳細については,以下記事が参照になる.

shelokuma tech blog | python | pandasにおけるdtypeの詳細

Pyファイルに以下を入力し,実行する.

import pandas as pd

# Creating a Series
s = pd.Series([1, 3, 5, 6, 8])

# Checking the data type
print("dtype:", s.dtype)

■実行結果

dtype: int64

“data type"を特定させたデータの出力

Seriesの丸カッコ内に,データタイプ(今回は"dtype=’float64′")を以下のように特定させてデータを出力させることができる.

Pyファイルに以下を入力し,実行する.

import pandas as pd

# Creating a Series
s = pd.Series([1, 3, 5, 6, 8], dtype='float64')

# Displaying the Series
print(s)

■実行結果

0    1.0
1    3.0
2    5.0
3    6.0
4    8.0
dtype: float64

DataFrame

“DataFrame"とは,行と列を含む二次元データを保持するクラスである.これは,Pandasでは主要なデータ構造として利用されており,ExcelやSQLテーブルに類似している.

pandas | pandas.DataFrame

二次元データの出力

Pyファイルに以下を入力し,実行する.

import pandas as pd

# Creating a DataFrame from a dictionary
data = {'Name': ['John', 'Jane', 'Bob'],
        'Age': [28, 24, 22],
        'City': ['New York', 'San Francisco', 'Los Angeles']}

df = pd.DataFrame(data)

# Displaying the DataFrame
print(df)

■実行結果

   Name  Age           City
0  John   28       New York
1  Jane   24  San Francisco
2   Bob   22    Los Angeles

特定の列の出力

“Name"列のラベルのデータを出力させるため,"print(df['Name’])"を実行する.

Pyファイルに以下を入力し,実行する.

import pandas as pd

# Creating a DataFrame from a dictionary
data = {'Name': ['John', 'Jane', 'Bob'],
        'Age': [28, 24, 22],
        'City': ['New York', 'San Francisco', 'Los Angeles']}

df = pd.DataFrame(data)

# Accessing a specific column
print(df['Name'])

■実行結果

0    John
1    Jane
2     Bob
Name: Name, dtype: object

特定条件のデータの出力(<, >, <=, >=)

特定の条件のデータを出力させるため,不等号を利用することで条件指定をすることができる.今回は,年齢が24歳以上のデータを出力する.

Pyファイルに以下を入力し,実行する.

import pandas as pd

# Creating a DataFrame from a dictionary
data = {'Name': ['John', 'Jane', 'Bob'],
        'Age': [28, 24, 22],
        'City': ['New York', 'San Francisco', 'Los Angeles']}

df = pd.DataFrame(data)

# Filtering rows based on a condition
filtered_df = df[df['Age'] >= 24]
print(filtered_df)

■実行結果

   Name  Age           City
0  John   28       New York
1  Jane   24  San Francisco

列データの追加

dataに列データを追加することができる.

Pyファイルに以下を入力し,実行する.

import pandas as pd

# Creating a DataFrame from a dictionary
data = {'Name': ['John', 'Jane', 'Bob'],
        'Age': [28, 24, 22],
        'City': ['New York', 'San Francisco', 'Los Angeles']}

df = pd.DataFrame(data)

# Adding a new column
df['Salary'] = [50000, 60000, 45000]
print(df)

■実行結果

   Name  Age           City  Salary
0  John   28       New York   50000
1  Jane   24  San Francisco   60000
2   Bob   22    Los Angeles   45000

データがない場合のハンドリング

Dropnaの利用

data内の数字に"NaN"などがある場合,"dropna"を利用することで,当該行を削除することができる."Age"に"NaN(np.nan)"があるので,"Name": “Tom", “City": “Florida"が表示されない.

pandas | pandas.DataFrame.dropna

Pyファイルに以下を入力し,実行する.

import pandas as pd
import numpy as np

# Creating a DataFrame from a dictionary
data = {'Name': ['John', 'Jane', 'Bob', 'Tom'],
        'Age': [28, 24, 22, np.nan],
        'City': ['New York', 'San Francisco', 'Los Angeles', 'Florida']}

df = pd.DataFrame(data)

# Dropping rows with missing values
df = df.dropna()

# Displaying the DataFrame
print(df)

■実行結果

   Name   Age           City
0  John  28.0       New York
1  Jane  24.0  San Francisco
2   Bob  22.0    Los Angeles

Fillnaの利用

data内の数字に"NaN"などがある場合,"fillna"を利用することで,"NaN"を"0.0″に変換することができる."Age"に"NaN(np.nan)"があるので,"0.0″が表示される.

pandas | pandas.DataFrame.fillna

Pyファイルに以下を入力し,実行する.

import pandas as pd
import numpy as np

# Creating a DataFrame from a dictionary
data = {'Name': ['John', 'Jane', 'Bob', 'Tom'],
        'Age': [28, 24, 22, np.nan],
        'City': ['New York', 'San Francisco', 'Los Angeles', 'Florida']}

df = pd.DataFrame(data)

# Filling missing values with a specific value
df = df.fillna(0)

# Displaying the DataFrame
print(df)

■実行結果

   Name   Age           City
0  John  28.0       New York
1  Jane  24.0  San Francisco
2   Bob  22.0    Los Angeles
3   Tom   0.0        Florida

CSVファイルの読み込み・書き込み

CSVファイルの書き込み

dataの中身をCSVファイルに書き込み,出力することができる.

pandas | pandas.DataFrame.to_csv

Pyファイルに以下を入力し,実行する.

import pandas as pd

# Creating a DataFrame from a dictionary
data = {'Name': ['John', 'Jane', 'Bob'],
        'Age': [28, 24, 22],
        'City': ['New York', 'San Francisco', 'Los Angeles']}

df = pd.DataFrame(data)

# Writing to a CSV file
df.to_csv('output_filename.csv', index=False)

■実行結果

以下のように,フォルダ内に"output_filename.csv"を出力することができた.

“output_filename.csv"にdataの中身を書き込むことができた.

CSVファイルの読み込み

CSVファイルの中身を読み込みすることができる.

pandas | pandas.read_csv

フォルダ内に,以下のようにCSVファイルを作成する.

CSVファイルの中身を以下のように編集する.

Pyファイルに以下を入力し,実行する.

import pandas as pd

# Reading a CSV file
df = pd.read_csv('employee_info.csv')
print(df)

ターミナルに以下のように,CSVファイル内のデータが出力される.

      Name  Age   City
0   Jotaro   28  Tokyo
1  Kakyoin   24  Kyoto
2   Josuke   22  Osaka

参照

pandas | User Guide | 10 minutes to pandas

pandas | pandas.Series

pandas | User Guide | Essential basic functionality | dtype

shelokuma tech blog | python | pandasにおけるdtypeの詳細

pandas | pandas.DataFrame

pandas | pandas.DataFrame.describe

pandas | pandas.DataFrame.dropna

pandas | pandas.DataFrame.fillna

pandas | pandas.DataFrame.to_csv

Medium | pandas for Data Science: Part1

以上