【Python】PandasのSeriesとDataFrameという2つの構造の違いを解説!

【Python】PandasのSeriesとDataFrameという2つの構造の違いを解説!

PandasにはSeriesとDataFrameという2つのデータ構造が存在しています。
今回はこの2つのデータ構造の違いとは何かを重点的に解説します。

この記事の目標
・Pandsに2つの構造があることの理解
・2つの構造の違いを理解

その他Pythonの記事は以下にまとめています!!
Python記事まとめ

Pandas.Series構造

Pandas.Series構造は一言で言うと1次元の配列のようなものです。
たとえばこんなのがSeries構造となります。

import pandas as pd
pd_s=pd.Series([50,60,70,80]) #pandas.Seriesを作る
print(pd_s)

#表示結果
#0 50
#1 60
#2 70
#3 80
#dtype: int64

左の列がindex(行名)、右が値となります。
このようにSeriesは1次元、つまり1列分だけ値が存在する構造です!
そのためもし右に1列足したいと思ってもできません。

[スポンサーリンク]


Pandas.DataFrame構造

Pandas.DataFrame構造は行と列が存在する2次元構造です。

かんたんに言うとエクセルのようなテーブル形式のデータ構造のことです。
例えばこんなのがDataFrame構造となります。

import pandas as pd
#pandas.DataFrameを作る
pd_d=pd.DataFrame([[50,60,70,80],[10,11,12,13],[22,23,24,25]])
print(df_d)

#表示結果
#   0  1  2 3
#0 50 60 70 80
#1 10 11 12 13
#2 22 23 24 25

一番左側の0,1,2がindex(行名)、一番上の0,1,2,3がcolumn(列名)でそれ以外が値となります。
例えば1つの値を参照する時は0行0列目は50、1行3列目は13という風に参照します。

先ほどのSeriesは1列分しか存在しない前提なので列名がありませんでしたが、DataFrameはいくらでも列を作れる構造なので列名が割り振られています。

DataFrameはエクセルみたいな感じの構造だと思ってもらえれば理解しやすいと思います!
エクセルもいくらでも行や列を作れますよね?
DataFrameも全く同じなんです!

仮に列を足したいと思ってもいくらでも列を足すことができるので、
色々と分類されたデータを扱う時に必須なデータ構造となります。

もちろんこんなのもDataFrameになります。

#pandas.DataFrameを作る
pd_ss=pd.DataFrame([[50]])
print(pd_ss)

#表示結果
#  0
#0 50

値は50と1つしかありませんが、行名と列名が割り振られていて、いくらでも列を増やせるようになっています。

ちなみに先ほどのDataFrameで特定の列を取り出すとSeriesになります。
1つの列だけを取り出すので1次元のデータ構造、つまりSeriesとなるわけです。

#pandas.DataFrameを作る
pd_d=pd.DataFrame([[50,60,70,80],[10,11,12,13],[22,23,24,25]])
print(df_d)

#表示結果
#   0  1 2 3
#0 50 60 70 80
#1 10 11 12 13
#2 22 23 24 25

#データ構造
#<class 'pandas.core.frame.DataFrame'>

#次にdf_dの0列目だけを取りだす
pd_split=pd_d[0] 
print(pd_split)

#表示結果
#0 50
#1 10
#2 22
#Name: 0, dtype: int64

#データ構造
#<class 'pandas.core.series.Series'>

まとめ

2つの構造についてまとめると

Series
・値が1列しか存在しない
・2列目を作ろうと思ってもできない

DataFrame
・エクセルのような構造でいくらでも列を増やせる

という違いがあります!

 

この記事についてわかりずらい点等がありましたらコメントにて指摘して頂けると助かります。

[スポンサーリンク]


Pandasカテゴリの最新記事