Coursera – Introduction to Data Science in Python #13 (2週目その8)

Coursera『Introduction to Data Science in Python – by University of Michigan』の学習メモ

Pandasの復習

第2週目のアサインメントを解いてみて、まだまだpandasの扱いに慣れてないと思ったので、基本的な操作を復習する。

numpyとpandasをインポート。


import numpy as np
import pandas as pd

CSVからデータフレーム

pd.read_csvでCSVをデータフレームの形式で読み込むことができる。


df = pd.read_csv('olympics.csv', index_col=0, skiprows=1)
df.head()

データフレームのインデックスを加工

df.indexでインデックスを取得できる。
df.index = hoge とすれば、hogeをインデックスにセットすることができる。


# インデックスを取得して加工
names_ids = df.index.str.split('\s\(')

# 加工した値をインデックスに設定
df.index = names_ids.str[0]

データフレームのカラム追加

df[“NEW”] = hoge とすることで、新しいNEWカラムにhogeの値を追加することができる。


# 新しいIDカラムにnames_idsの3文字を入れる
df['ID'] = names_ids.str[1].str[:3]

append()

append()を使ったカラム追加。


i_df = pd.DataFrame([[i, totalpop]], columns=["STNAME", "TOTALPOP"])
df = df.append(i_df)

データフレームカラムの削除

df.drop()で削除することができる。オリジナルデータは変更されないので、 df = df.drop のように新しく定義し直す必要がある。


df = df.drop('Totals')

データフレームの並び替え

df.sort_values() で並び替え。引数「by=””」にカラム名を指定する。降順にするときは引数に「ascending=False」を渡す。


df = df.sort_values(by='Gold', ascending=False)

データフレームの値の取得

loc

df.loc[ [行ラベル], [列ラベル] ] で値を取得する。

iloc

df.iloc[ [行番号], [列番号] ] で値を取得する。

データフレームの絞り込み

df[(条件)]

df[ ( df[“列名”] > 0 ) & ( df[“列名”] > 0 ) ]


df = df[(df['Gold'] > 0) & (df['Gold.1']  > 0)]

df[条件1][条件2]

df = df[df[‘列名’] == 50][df[‘列名’] > df[‘列名’]]


df = df[df['SUMLEV'] == 50][df['POPESTIMATE2015'] > df['POPESTIMATE2014']]

df.query(‘条件’)

df = c_df.query(‘列名 in [1, 2]’)


df = df.query('REGION in [1, 2]')

str.contains(‘文字列’)

含む文字列の抽出


df = df[df['CTYNAME'].str.contains('Washington')]

str.startswith(‘文字列’)

始まる文字列の抽出


df = df[df['CTYNAME'].str.startswith('Washington')]

データフレームの集計

count

グルーピングして数を数える


 df = df.groupby("STNAME").count()

sum

合計値を出す


totalpop = df[df["STNAME"] == i].iloc[:3]["CENSUS2010POP"].sum()

重複の削除

unique() で重複を削除


index_array = df["STNAME"].unique() 

データフレームからシリーズを生成

dfの列名を指定してpandas Seriesを生成する


countries = pd.Series(df["Points"], index=df.index.values)

pythonの復習

絶対値を取得

abs(数値)


df["Gold dif"] = abs(df["Gold"] - df["Gold.1"])

listへ変換

tolist()


answer = df.sort_values(by='TOTALPOP', ascending=False).iloc[:3]["STNAME"].tolist()

最大値・最小値の取得

max(list) と min(list)


df["CHANGE"] = df[max(df[columns_to_calculate])] - df[min(df[columns_to_calculate])]

Sources

兵庫県西宮市生まれのフリーランスRailsエンジニア。海外を拠点にデジタルノマド生活中。/ 前職・資格:公認会計士 / プログラミング言語:Ruby, JavaScript, HTML, CSS / 日本語・英語
コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です