shinochin’s diary

東大院情報理工M1の独り言

【Pandas】データフレームの結合【タテ】

Kaggleというデータサイエンスのコンペを始めるに当たって

Pandasの使い方を勉強しています。

 

今回はデータフレームの結合について

 

データフレームを定義

df_sample1 = pd.DataFrame ([["day1","day2","day1","day3”,”day3”,”day2"],
["A",”C”,”A”,”B”,”C”,”C”]]).T

df_sample2 = pd.DataFrame([["day3”,”day3”,”day2”,”day1”,”day2”,”day1”],
[“B”,”A”,”A”,”B”,”C”,”A”]]).T

 

 

タテに結合(pd.concat)

joined = pd.concat([df_sample1, df_sample2])

#6x2行列をタテに二つ

#12x2行列ができる。

 <参考にしたサイト>

http://pythondatascience.plavox.info/pandas/pandasでデータフレームを結合/

Python Pandasでのデータ操作の初歩まとめ − 前半:データ作成&操作編 - Qiita

Python+Eclipse+機械学習 〜環境構築〜【Mac】

<開発環境>

Mac OS Yosemite(10.10.5)

 

<本文>

PyDevを使ってEclipsepythonのコードを書いているんですが、scikit-learnをimportしようとしたらエラーが起きました。

 

僕はpyenvを使ってpythonのバージョン管理をして、pipを使ってパッケージをインストール・管理しているのですが、pipでインストールしたパッケージは以下の場所にあるようです。

 

/Users/ユーザー名/.pyenv/versions/2.7.9/lib/python2.7/site-packages

 

ところが、EclipsePythonインタープリタを指定する際に、pyenvのpythonではなく、

 

/usr/bin/pythonというデフォルトで入っているpythonを指定していたためにscikit-learnをimportできなかったようです。

 

Eclipseで新しくpythonインタプリタとして

 

/Users/ユーザー名/.pyenv/versions/2.7.9/bin/python

 

を指定し、Eclipseを再起動したらエラーは消えました!

 

ついでにpython3.4も登録しました。

 

納得納得( ´ ▽ ` )

 

 

<参考にしたサイト>

moro-archive.hatenablog.com

qiita.com

 

↓ついでにパッケージのバージョンを一気に新しくしました

qiita.com

 

 

東京大学大学院入試の話(情報理工学と工学)

今年の8月に東大の大学院の入試、通称院試がありました。

一応内部生だけど専攻を変えようとしていたので、実質外部生でした。

外部生となると情報が内部生に比べて圧倒的に少ないのが難点。。。

ネットで外部から受験した人のブログが何個かあって、それだけでもとても参考になったので僕も院試体験記を書こうと思う...!

※気になることがあったら気軽にコメント欄で質問してくださいね。

 

受けた院試は以下の2つ

  • 情報理工学系研究科コンピュータ科学専攻(第一志望)
  • 工学系研究科システム創成学専攻(第二志望、学部と同じ専攻)

開示した点数、面接で聞かれたことも含めて順に書いていきます。

 

 

情報理工学系研究科コンピュータ科学専攻

 外国語(TOFEL-ITP):543 / 677

 一般教育科目(数学):204 / 300

 専門科目:224 / 800

 

おわかりいただけるだろうか・・。

専門科目の点数の低さが・・。

CS専攻ではTOFELは足切りに使われるともっぱらの噂だったので、英語は1週間前から対策始めました。問題形式になれて、文法問題のパターンをつかむだけで30点くらい上がる気がする。実際英語に時間割くより、数学専門に時間割く方がコスパが◎

数学は、大学の1~2年でやるような数学をおさらいすればいいと思う。真面目にいい成績を取ってきた人ならさほど問題はなさそう。

問題は専門科目。学科の授業の期末試験とそっくり同じ問題が院試で出題されることもあるらしく、理学部情報学科の人たちは圧倒的有利。

TwitterISer(=理学部情報学科の学生のこと)で検索して彼らを探してお友達になり、過去問を流してもらうのも一つの手かもしれない。

内部生の間でも院試の過去問の答えは出回ってないそうなので、それは諦めた方が良さそうです。

実際に院試を受けて思ったことは

「コンピュータアーキテクチャ出題されすぎ。もっと勉強しとけばよかった。」

HP行けば参考書とか書いてありますが、離散数学とか機械学習とか勉強する前に、コンピュータアーキテクチャを完璧にするべき。それだけで200~300点は堅そう。

僕は試験勉強でいろんな科目に手を出しすぎて、時間が足りずどっちつかずって感じでした。受かったからよかったけど。

ちなみに今はやりの機械学習で超著名なS山・S藤研が第一・二志望だったんですがいかんせん人気すぎて、この点数では到底いけませんでした。

まあこんな点数でも受かるっていう参考してください・・。

面接でも、第三志望でもいいですか?って聞かれたし。ちなみに面接で大したことは聞かれないです。

面接のときはスーツと私服で半々でした。笑

 

 

工学系研究科システム創成学専攻

 外国語(TOEFL):62 / 100

 論理的(中略)数理的問題:93 / 100

 小論文:35 / 100

 

TOEFLについては上で書いた通り。

こっちは内部生ということもあり、謎の自信からほぼ対策はしないで臨みました。

数理的問題は今年から一般の数学も出題されるようになったから対策が必要。とはいえ逸脱して難しい問題はないので、1,2年で普通に勉強してきていれば問題なさそう。

数理的問題の方は中学受験のような地頭使って解くようなやつ。こっちは対策しても仕方ない感あります。

数理的問題は同じ学科の知り合いたちも大抵満点近くとってるっぽいのでここで差はつかなそう。

この点数を見ればわかるように小論文で大きく差がついた。そのためこちらも志望した研究室には行けませんでした。

でも小論文って何を対策すればいいんだってばよ。

面接は、就活の面接みたいなことを聞かれました。面接官として教授が7人くらいいて、一人から一つずつ質問されるみたいな感じ。質問内容は、希望研究室の志望動機、システム創成学専攻に期待するもの、あなたの長所・短所とか、興味のある分野とか、あと併願してるかどうかとか。

面接時は全員スーツでした。普通スーツだよね。

【Mac OS】テキスト 置き換え

テキスト中の文字列を他の文字列に置き換えたい時があります。

例えば、javaでクオーテーションマークや改行を含む長い文章を一つのString型の文字列変数として定義したいときです。

そのままコードにコピペすると見栄えが悪いし、"を文字列の終わりだと判断されてエラーが起きることもあります。

そんなときは・・・

  1. テキストエディタに一旦コピー
  2. ⌘F
  3. 「置き換え」にチェック
  4. 好きなように置き換える。

これでOK!

 

<備考>

  • クオーテーションマーク

「"」をString型の文字列に含めたいときは、「\"」とすれば、文字列の終わりだとは判断されない。

  • 改行

例えばテキストエディタに文章をコピーすると、改行コードは見えない。

しかし、「option+Enter」を検索欄で入力すれば見えない改行も検索できる。

同様に改行をString型の変数に含めたかったら、「\n」に変換すればよい。

MySQLコマンド集(随時追加予定)

MySQLを久々に使おうとするたびに起動の仕方やコマンドを忘れるので

備忘録として記録しようと思う。

注)

OS X 10.10.5 (Yosemite)

MySQL 5.7.10

  • 起動

$ mysql.server start

  • ログイン

$ mysql -u root -p

   の後にパスワードを入力して対話モードに入る

  • 主要コマンド

## データベース

# データベース一覧を表示

show databases;

# そのデータベースがあったら削除(危険な操作)

drop database if exists <データベース名>;

# データベースを作成(同じ名前のものを作ろうとするとエラー)

create database <データベース名>;

# 使用するデータベースを選択

use <データベース名>

## テーブル

# テーブルが存在すれば削除

drop table if exists <テーブル名>;

# テーブルを作成

create table <テーブル名> (<フィールド名> <型>, <フィールド名> <型>, ...);

## データ

# テーブルの検索

select <フィールド名1>, <フィールド名2>,... from <テーブル名>;

select * from <テーブル名>;   # データの全てのフィールドを表示

# データの追加

insert into <テーブル名> (<フィールド名1>, <フィールド名2>,...) values (<値1>, <値2>,...)

## 検索条件

# データを10個まで表示

select * from <テーブル名> limit 10;  #テーブル内のデータが膨大な場合は必須

# フィールドの値が値と等しいデータのみを表示

select * from <テーブル名> where <フィールド名> = <値>   # 同様に >, <, >=, <=も使える。

# フィールドの値が値1,値2,...のいずれかであるデータを表示

select * from <テーブル名> where <フィールド名> in (値1, 値2,...);

# データの項目数を表示、as(省略可)によってフィールド名を変えることが可能

select count(*) as count from <テーブル名>;

# 指定したフィールドの値が昇順になるように表示

select * from <テーブル名> order by <フィールド名> asc

# 指定したフィールドの値が降順になるように表示

select * from <テーブル名> order by <フィールド名> desc