How to make datas our friends

「エンジニアは発信していくことが責務である」という言葉に感化されて始めた勉強したことを書き留めていく備忘録的なやつ。

Python/Shellでtxtファイルの行数をカウントする

背景

言語処理100本ノック 2015を今やっているのでその備忘録的なやつ。

やりたいこと

Pythonで以下URLのhightemp.txtを読み込み行数をカウントする。
同様にUnixコマンドでも行数の確認を行い、その際wcコマンドを使用する。

http://www.cl.ecei.tohoku.ac.jp/nlp100/data/hightemp.txt

結果

Pythonで行数カウント

> import pandas as pd
> data = pd.read_table('http://www.cl.ecei.tohoku.ac.jp/nlp100/data/hightemp.txt', header=None)

> len(data)
> 24

Unixコマンドで行数カウント

> wc -l /Path/To/hightemp.txt
> 24

解説/考察

今回はPythonでtxtファイルを読み込むためにpandasを使用しました。
CSVファイルを読み込む場合はread_csvを、txtの場合はread_tableを使用します。

import pandas as pd

# CSVを読み込み
pd.read_csv('/Path/To/Csv.csv')

# Textを読み込み
pd.read_table('/Path/To/Text.txt')

オプションで区切り文字の指定が可能ですが、デフォルトでread_csv=","/read_table="Tab"になっているので指定しなくても問題ないです。

ちなみにheaderオプションを指定しないと勝手に先頭行をヘッダーとしてデータフレームが作成されます。
今回はhightemp.txt内にヘッダーにあたる行が存在しないので、headerオプションを使用して先頭行がヘッダーにならないようにしています。

> data = pd.read_table('/Path/To/Text.txt', header=None)

こんな感じにデータが読み込まれました。
ヘッダーは数字になってますね。

f:id:minion024:20170520192455p:plain

ちなみにjupyter notebookを使用しています。

あとはlen()を使用して行数をカウントできます。

> len(data)
> 24

.indexを使用して行数を確認することも可能です。

> data.index
> RangeIndex(start=0, stop=24, step=1)

今回はUnixコマンドのwcを使用して行数を確認するよう指示されているのでUnixコマンドでも同様のことをやりました。
wc -l /Path/To/Text.txtで行数確認ができるので一瞬で終わりましたw

> wc -l /Path/To/hightemp.txt
> 24