LoginSignup
0

More than 5 years have passed since last update.

python 久しぶりに 自分用めも

Last updated at Posted at 2018-09-13

インターンが始まった。しばらくは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:x*2

def my_funk(x):
return x
*2
は同じ

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。

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