既出情報のトレースではありますが、自分でわかりやすいようにまとめます。
準備
anacondaには最初からついてるはず。ところが、古めかしい「pandas」を使用していると、便利な構文が使えなかったりするので、pandasをアップグレードする必要がある。以下Windowsの場合。
管理者権限で Anaconda Prompt 立ち上げ → コマンド。
pip install --upgrade pandas
データの読み込み
pd.read_csv(‘csvfile’)
csvデータを読みこむ。読み込んだものはデータフレームオブジェクトになる
df.head()
頭5行分データ取得
しっぽ5行分データ取得
データの状態を確認
行数、列数やデータ型など
df.shape
行数と列数がタプルになって返ってくる。 → (len(row), len(column))
df.index
rangeindexオブジェクトというよくわからない型が返ってくるが、len(df.index) とすると単純に「行数」が返ってくる。しかし shapeもこれも そうだが、ヘッダーの行は自動的にとりのぞかれていることに注意
df.columns
こちらもよくわからない型がかえるので、len(df.columns) とすると単純に「列数」が返ってくる。
df.dtypes
型の確認
統計
df.describe()
データの取得、更新など
df[“col_name”]
カラム名を指定すると、その列のデータを取得できる
df.loc[“index”, “columns”]
df.loc[“index”:”index”, “columns”:”columns”]
df.loc[:,:]
まずatだのiatだのうざい。locとilocだけ十分やろ。しらんけど。まずはindexという概念を理解する必要がある。該当データにindexデータが含まれていない場合 pandas は自動でインデックス番号を付与する。この場合は loc[0: “index”, “columns”:”columns”]のようにint型で指定。
df.iloc[index, index]
df.iloc[index:index, columns:columns]
df.iloc[:,:]
ilocの場合は番号で指定できると思っておけばいいのではないか。
使わない。飛ばす。
データの更新
更新用のメソッドとかあるっぽいけど、とりあえずいいかなあ。とりあえず使わない。状況次第で追記
ユニーク系
df[“name”].nunique()
df[“name”].value_counts()
使わないかなあ。unique()はユニークなやつをn numpy.ndarray とかいうよくわからない型で返す。value_counts()は重複しているやつそれぞれカウント。強いて使いそうなのは、nunique()でこれはユニークの合計をintで返す。
df[“name”].drop_duplicates()
重複の削除。これは結構つかうかも。あと s がついてることに注意。
並び変えとか
df[“name”].sort_values()
そのまんま。
df.sort_index()
使わない。
データの削除
行の削除
df.drop(0)
引数にインデックス番号で行削除
df.drop([1,2,3])
複数行を削除したい場合は引数にリスト
列の削除
df.drop(columns=”name”)
index= とか columns= とかはバージョン 0.21から上じゃないと使えないそうなんで、最初に書いてある通りバージョンアップしときましょ。
イタシカタナシにこういう書き方もできる。
df.drop(“name”, axis=1)
行列の削除
使わないとは思いますけど、なにかのときに
df.drop(index=[1,3,5], columns=[“name”, “sales”])
雑感
あいかわらず汚いブログ。
pandasは元データを壊すわけじゃないので、気軽にいろいろできるかんじ。しかしずいぶんと横道にそれた感。
コメント