connvoi.com

pythonでDataFrameを使うときのTips

30 November 2017

pythonでDataframeを扱うときのメモ 利用したデータはこれ
sortのために全員2017年に生まれてたことに。

複数の条件式の指定

andは&でつなぐ
orは|でつなぐ それぞれの式は括弧でまとめておく

#読み込みはこんなかんじで
import pandas as pd
df=pd.read_csv('pocketcamp.csv')

#クール属性かつオスの住人一覧
df[(df['ATTRIBUTE']=='クール') & (df['SEX']=='male')]

 ID    NAME   SEX ATTRIBUTE       BIRTH
  2  セルバンテス  male       クール  2017-04-30
  4     アポロ  male       クール  2017-07-04
 25    リカルド  male       クール  2017-12-06
 34   シュバルツ  male       クール  2017-06-16
 39     ボルト  male       クール  2017-10-06


#クールかつナチュラルの住人一覧
df[(df['ATTRIBUTE']=='クール') | (df['ATTRIBUTE']=='ナチュラル')]

ID    NAME     SEX ATTRIBUTE       BIRTH
0    アグネス  female       クール  2017-04-21
1   アルベルト    male     ナチュラル  2017-06-09
2  セルバンテス    male       クール  2017-04-30
4     アポロ    male       クール  2017-07-04
5    ペーター    male     ナチュラル  2017-04-05

sortの際の第2,3ソート条件の指定

#第1ソートに性別, 第2ソートに誕生日を設定する
df[df['ATTRIBUTE']=='ナチュラル'].sort_values(by=['SEX','BIRTH'], ascending=False)

ID   NAME     SEX ATTRIBUTE       BIRTH
32   サンデー    male     ナチュラル  2017-07-24
 1  アルベルト    male     ナチュラル  2017-06-09
17   リッキー    male     ナチュラル  2017-06-03
20   ハムスケ    male     ナチュラル  2017-05-30
31    ビンタ    male     ナチュラル  2017-04-11
 5   ペーター    male     ナチュラル  2017-04-05
33    ペンタ    male     ナチュラル  2017-01-05
19  キャラメル  female     ナチュラル  2017-12-27
15  エレフィン  female     ナチュラル  2017-12-08
16    ドレミ  female     ナチュラル  2017-03-26

複数カラムを指定してユニークを残す

drop_duplicatesにlistを指定して実現できる

#属性と性別だけのユニークを取る
df.drop_duplicates(['ATTRIBUTE', 'SEX']).sort_values(by=['ATTRIBUTE'])

ID    NAME     SEX ATTRIBUTE       BIRTH
 0    アグネス  female       クール  2017-04-21
 2  セルバンテス    male       クール  2017-04-30
 7    グラさん    male     スポーティ  2017-08-08
11   チャーミー  female     スポーティ  2017-04-17
 1   アルベルト    male     ナチュラル  2017-06-09
15   エレフィン  female     ナチュラル  2017-12-08
 3    アップル  female     ファンシー  2017-09-24k

属性の数をカウント

groupby.sumでやる

df['COUNT']=1
df.groupby('ATTRIBUTE').sum()

               ID  COUNT
ATTRIBUTE            
クール        153      8
スポーティ      220     11
ナチュラル      189     10
ファンシー      218     11

ファンシー住民は女子しかいないのか。。。

元データ(pocketcamp.csv)

  • tech
  • python