LoginSignup
0
2

More than 3 years have passed since last update.

[Python学習その3]pandasのDataFrameとSeries、標準のListを相互に変換する

Posted at

始めに

  • pandasで使われるDataFrameとSeries,標準のlistを相互に変換したい
  • pandasで加工したデータを他ライブラリで使う時、listしか対応していないことがあるので、困らないように

作業環境

  • OS:macOS Catalina ver10.15.6
  • コードエディター:jupyter lab
  • 言語:python3

参考サイト

実際にやってみる

  • listからdataframe,seriesに変換する
  • seriesからlistに変換する
  • dataframeからlist,seriesに変換する

listからdataframe,seriesに変換する

list→series

#pandasをインポートしてpdに名前変更
import pandas as pd
#標準ライブラリのリストを作成からの表示
l_1d = [0, 1, 2]
l_1d

#[0, 1, 2]
#次はlistをseriesに型変換する
s = pd.Series(l_1d)
s

#0    0
#1    1
#2    2
#dtype: int64
#何も指定しないとindexは0から自動で決まる
#次はindexを指定しながらlistからseries型に変換する
s = pd.Series(l_1d, index=['row1', 'row2', 'row3'])
s

#row1    0
#row2    1
#row3    2
#dtype: int64
#一気にindexまで指定することもできる
#今回の記事とは関係ないけど、以外と使うかも
s = pd.Series({"row1":0,"row2":1,"row3":2})
s

#row1    0
#row2    1
#row3    2
#dtype: int64

list→dataframe

#データーフレームに変換するので2次元配列を用意する
l_2d = [[0, 1, 2], [3, 4, 5]]

df = pd.DataFrame(l_2d)
df

#   1   2
#0  0   1   2
#1  3   4   5
#index,columnの両方を指定してdataframeを作成することも可能
df = pd.DataFrame(l_2d,
                  index=['row1', 'row2'],
                  columns=['col1', 'col2', 'col3'])
df

#   col1    col2    col3
#row1   0   1   2
#row2   3   4   5
#一気にindex,columnまで指定することもできる
#今回の記事とは関係ないけど、以外と使うかも
df = pd.DataFrame([[1,2,3],[4,5,6]],["row1","row2"],["col1","col2","col3"])
df

#   col1    col2    col3
#row1   1   2   3
#row2   4   5   6

seriesからlistに変換する

series→list

#まずはseriesを作成する
s = pd.Series([0, 1, 2])
print(s)

# 0    0
# 1    1
# 2    2
# dtype: int64
#seriesの値だけlist型で取得する
l_1d = s.values.tolist()
print(l_1d)

#[0, 1, 2]

dataframeからlist,seriesに変換する

dataframe→list

#dataframeを作成
df = pd.DataFrame([[0, 1, 2], [3, 4, 5]])
print(df)

#   0  1  2
#0  0  1  2
#1  3  4  5
#dataframeの値だけをlist型で取得する
#indexやcolumnsは無視される
l_2d = df.values.tolist()
print(l_2d)

#[[0, 1, 2], [3, 4, 5]]
#dataframeをlist型で取得すると2次元配列になる
#2次元を1次元配列に変換する方法
#関係ないけどあったらいつか使うかも?

#numpyを使うのでインポートします
import numpy as np
#標準ライブラリのlist型からarray型に変換
#どちらも配列です
arr_list = np.array(l_2d)
arr_list.flatten().tolist()

#[0, 1, 2, 3, 4, 5]

dataframe→series

#dataframeを作成する
df = pd.DataFrame([[0, 1, 2], [3, 4, 5]],["row1","row2"],["col1","col2","col3"])
print(df)

#      col1  col2  col3
#row1     0     1     2
#row2     3     4     5
#columnをseriesとして取得する
df_toSer = df["col1"]
df_toSer

#row1    0
#row2    3
#Name: col1, dtype: int64
#indexをseriesとして取得する
df_toSer2 = df.iloc[0]
df_toSer2

#col1    0
#col2    1
#col3    2
#Name: row1, dtype: int64

終わりに

今回参考にしたサイトになります。
- pandas.DataFrame, SeriesとPython標準のリストを相互に変換
- Pandasユーザーガイド「データの索引と選択」(公式ドキュメント日本語訳)
- pandas documentation

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2