パンダはなぜSeriesと単一列を区別するのDataFrameですか?
言い換えれば、Seriesクラスが存在する理由は何ですか?
私は主に日時インデックス付きの時系列を使用していますが、これはコンテキストの設定に役立ちます。
DataFrameとしてdictのSeries(つまり、現在の実装ではありませんが)あなたが今までに戻ってくる理由、それはまだ不明だSeriesオブジェクトを代わりにDataFrame(つまり、概念的dictつのエントリを持ちます)。
パンダはなぜSeriesと単一列を区別するのDataFrameですか?
言い換えれば、Seriesクラスが存在する理由は何ですか?
私は主に日時インデックス付きの時系列を使用していますが、これはコンテキストの設定に役立ちます。
DataFrameとしてdictのSeries(つまり、現在の実装ではありませんが)あなたが今までに戻ってくる理由、それはまだ不明だSeriesオブジェクトを代わりにDataFrame(つまり、概念的dictつのエントリを持ちます)。
回答:
パンダのドキュメントを引用する
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)ラベル付きの軸(行と列)を持つ、2次元のサイズが可変で、潜在的に異種の表形式のデータ構造 算術演算は、行と列の両方のラベルで整列します。Seriesオブジェクトのdictのようなコンテナと考えることができます。主要なパンダのデータ構造。
したがって、Seriesは、DataFrame概念的にだけでなく文字通り、の1つの列のデータ構造です。つまり、aのデータDataFrameは実際にはのコレクションとしてメモリに格納されますSeries。
同様に、マトリックスはリストで作成されるため、リストとマトリックスの両方が必要です。単一行マトリックスは、機能的にはリストと同等ですが、それらを構成するリストなしでは存在できません。
どちらも非常に類似したAPIを持っていますが、DataFrameメソッドには常に複数の列がある可能性に対応していることがわかります。そしてもちろん、いつでも別のSeries(または同等のオブジェクト)をに追加できますが、別のにDataFrame追加するSeriesにSeriesはを作成する必要がありDataFrameます。
__repr__行動をとった場合に役立つので、それらを混同することはできませんか?
DataFramefromの実際の内部データ構造については何も結論付けられませんCan be thought of as a dict-like container for Series objects。実際、現在はとして格納されていますBlockManager(これは信頼すべきではない実装の詳細です)。
パンダのドキュメントからhttp://pandas.pydata.org/pandas-docs/stable/dsintro.html Seriesは、任意のデータ型を保持できる1次元のラベル付き配列です。パンダシリーズの形式でデータを読み取るには:
import pandas as pd
ds = pd.Series(data, index=index)
DataFrameは、潜在的に異なるタイプの列を持つ2次元のラベル付きデータ構造です。
import pandas as pd
df = pd.DataFrame(data, index=index)
上記の両方のインデックスにリストがあります
例:次のデータを含むcsvファイルがあります。
,country,popuplation,area,capital
BR,Brazil,10210,12015,Brasile
RU,Russia,1025,457,Moscow
IN,India,10458,457787,New Delhi
上記のデータをシリーズおよびデータフレームとして読み取るには:
import pandas as pd
file_data = pd.read_csv("file_path", index_col=0)
d = pd.Series(file_data.country, index=['BR','RU','IN'] or index = file_data.index)
出力:
>>> d
BR Brazil
RU Russia
IN India
df = pd.DataFrame(file_data.area, index=['BR','RU','IN'] or index = file_data.index )
出力:
>>> df
area
BR 12015
RU 457
IN 457787
file_dataしbrics、CSVに米国行を追加し、変更['BR'....'US']しますbrics.index。おそらく正しいpupuplation。
シリーズは、整数、浮動小数点数、文字列などの任意のデータ型を保持できる1次元オブジェクトです。
import pandas as pd
x = pd.Series([A,B,C])
0 A
1 B
2 C
シリーズの最初の列はインデックス、つまり0、1、2と呼ばれます。2番目の列は実際のデータ、つまりA、B、Cです。
DataFramesは、シリーズ、リスト、辞書を保持できる2次元オブジェクトです。
df=pd.DataFrame(rd(5,4),['A','B','C','D','E'],['W','X','Y','Z'])
系列は、任意のデータ型(整数、文字列、浮動小数点数、Pythonオブジェクトなど)を保持できる1次元のラベル付き配列です。軸ラベルはまとめてインデックスと呼ばれます。Seriesを作成する基本的な方法は、以下を呼び出すことです。
s = pd.Series(data, index=index)
DataFrameは、潜在的に異なるタイプの列を持つ2次元のラベル付きデータ構造です。これは、スプレッドシートやSQLテーブル、またはSeriesオブジェクトの辞書のようなものと考えることができます。
d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
車のデータをインポートする
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)
drives_right列をシリーズとして出力します。
print(cars.loc[:,"drives_right"])
US True
AUS False
JAP False
IN False
RU True
MOR True
EG True
Name: drives_right, dtype: bool
シングルブラケットバージョンはPandasシリーズを提供し、ダブルブラケットバージョンはPandas DataFrameを提供します。
drives_right列をDataFrameとして出力します。
print(cars.loc[:,["drives_right"]])
drives_right
US True
AUS False
JAP False
IN False
RU True
MOR True
EG True
シリーズを別のシリーズに追加すると、DataFrameが作成されます。