2020年2月4日火曜日

Goでもpandasっぽいことできる!

https://qiita.com/kakiuchis/items/46ff158295686c0c71cf
勉強の為にシェアしました。

関連情報:
Pandasとは
Google検索結果はこちら

2018年09月06日に更新

pandasのDataFrameのデータ操作をよく忘れるので、よく使用する操作を自分の為にまとめた

この記事は最終更新日から1年以上が経過しています。


おつかれさまです、かきうち(@kakistuter)です。
すぐ忘れちゃうので、pandasのDataFrameのデータ操作の簡単早見表作りました。

事前にimport

import pandas as pd
import numpy as np

データ読み取り編

CSVの読み取り

df = pd.read_csv("ファイル名", header=None)
# `header=None`を指定せず`pd.read_csv("ファイル名")`とした場合は1行目が自動的にカラム名として挿入される

コピーの読み取り

df = pd.read_clipboard(header=None)
# `header=None`を指定せず`pd.read_clipboard()`とした場合は1行目が自動的にカラム名として挿入される

DataFrameの自作

df = pd.DataFrame(np.arange(12).reshape(4,3),index=['行名1','行名2', '行名3', '行名4'], columns=['カラム名1','カラム名2', 'カラム名3'])
# `index=[]`や`column=[]`を指定しない場合は、順に1,2,3・・・となる
# データは`np.arange(12).reshape(4,3)`といった`array`であること

データ抽出編

全カラム名の取得

df.columns

最初の数データ取得

df.head(行数)

各種情報取得

df.describe()

1行の取得

df.loc['行名']
# 出力はSeries型
df.loc[['行名']]
df.iloc[2]
# 出力はSeries型
# カッコ内の数値は先頭を0とるす行番号
df.iloc[[2]]
# カッコ内の数値は先頭を0とるす行番号

複数行の取得

df.loc[['行名','行名']]
df.iloc[[2,3]]
# カッコ内の数値は先頭を0とるす行番号
df.iloc[2:4, :]
# カッコ内の数値はスライス形式で[行の開始位置:行の終了位置-1]

1カラムの取得

df['カラム名']
# 出力はSeries型
df[['カラム名']]
df.loc[:, ['カラム名']]
df.iloc[:, [1]]
# カッコ内の数値は先頭を0とるすカラム番号

複数カラムの取得

df[['カラム名','カラム名']]
df.loc[:, ['カラム名','カラム名']]
df.iloc[:, [1,2]]
# カッコ内の数値は先頭を0とるすカラム番号

1行1列ピンポイントで取得

df.loc['行名', 'カラム名']
# 出力は値のみ
df.loc['行名']['カラム名']
# 出力は値のみ
df.loc[['行名'], ['カラム名']]
df.iloc[2,1]
# 出力は値のみ
# カッコ内の数値は先頭を0とする[行番号,カラム番号]
df.iloc[[2], [1]]
# カッコ内の数値は先頭を0とする[[行番号],[カラム番号]]
df.at['行名', 'カラム名']
# 出力は値のみ
df.iat[2,1]
# 出力は値のみ
# カッコ内の数値は先頭を0とする[行番号,カラム番号]

複数行複数列を指定して取得

df.loc[['行名','行名'], ['カラム名','カラム名']]
df.iloc[[2,3], [1,2]]
# カッコ内の数値は先頭を0とする[[行番号,行番号], [カラム番号, カラム番号]]
df.iloc[2:4,1:3]
# カッコ内の数値はスライス形式で[行の開始位置:行の終了位置-1, カラムの開始位置:カラムの終了位置-1]

データ削除編

1行の削除

df.drop('行名')

複数行の削除

df.drop(['行名','行名'])

1カラムの削除

df.drop('カラム名', axis =1)

複数カラムの削除

df.drop(['カラム名','カラム名'], axis =1)

データ結合編

横方向に結合

pd.concat([df1, df2], axis =1)

データ変換編

arrayに変換

df.values

dframeに再変換

pd.DataFrame(df.values, index=['行名1','行名2', '行名3', '行名4'], columns=['カラム名1','カラム名2', 'カラム名3'])

csvに出力

df.to_csv("ファイル名.csv")

データ更新編

単一データの更新

データ取得して代入するのみ

複数データの一括更新

ただし代入される側とする側の行数、列数を合わせることは必須。
型もそろえた方が無難(型の違いによる意図しない行列入れ違いが発生するため)。

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます

0 コメント:

コメントを投稿