インターンが始まった。しばらくはpythonでデータを色々処理したりすることをやるみたい。いうて久しぶりすぎてやばいから復習せな。オライリーのデータ処理系の本を一冊買おうかと思う。
c++と結構こんがらがるな~~
内包表記とかいうのに久しぶりに触れた。
[expression for item in iterable]
条件式も追加できる
[expression for item in iterable if condition]
辞書包括表記
{key_item:value_item for item in iterable}
集合内包表記
{item for item in iterable}
ジェネレータ内包表記
(item for item in iterable)
ジェネレータ内包表記は一度だけしか実行できない
pandas
import sys
sys.path.append('~')
import pandas as pd
df = pd.read.csv("データ")
print(df.query("office_number>=100"))か、
print(df[df["office_number"]>=100])の形で、
条件指定してデータを抽出できる
行を取り出すには、DataFrame.locという関数を使っていく。
titanic_df.loc[0:2]のように
groupby関数を用いると、指定された列を値毎にグルーピングしてくれる。 帰ってきたgroupbyオブジェクトで集計関数を呼び出すと、 グループごとの平均や最大値、中央値などを調べることができる。
Survive列が0か1かで生存したかどうかを示している。
生存した人たちと、していない人たちで各値の平均をとってみる。
titanic_df.groupby(['Survived']).mean()
Python では lambda 式を使って無名関数を定義することができます。
lambda 式のフォーマットは lambda x: y です。 x が引数で、 y が戻り値です。
my_funk = lambda x:x2
と
def my_funk(x):
return x2
は同じ
l1 = [1, 3, 5]
l2 = map(lambda x: x ** 2, l1)
print(l2) [1, 9, 25]
l2 = [x ** 2 for x in l1]
pandas で行 / 列からデータ選択する方法をざっとまとめた。少し複雑なデータ選択をするときにやるべき流れは、
対象となる 行 / 列のデータと選択条件を確認する
API ガイドにやりたい処理に直接 対応するものがないか探す。
直接 対応するものがなければ、全体をいくつかの単純な処理に分解して、最終的に__getitem__ や ix に渡せる形にできるか考える。
自作関数を使ったほうが早そうだな、、、というときには Index.map or DataFrame.apply。