2021年1月4日月曜日

言語処理100本ノック 問題10

問. popular-names.txtは,アメリカで生まれた赤ちゃんの「名前」「性別」「人数」「年」をタブ区切り形式で格納したファイルである.以下の処理を行うプログラムを作成し,popular-names.txtを入力ファイルとして実行せよ.さらに,同様の処理をUNIXコマンドでも実行し,プログラムの実行結果を確認せよ.

行数をカウントせよ.確認にはwcコマンドを用いよ.

 

解答例

unixのwgetコマンドを利用してテキストをダウンロードする。

 wget https://nlp100.github.io/data/popular-names.txt

 

 もしくは、curlコマンドも利用できるが、その場合、ファイル名を指定してやる。

(指定しなければ、そのままファイルの中身を表示する。)

 curl https://nlp100.github.io/data/popular-names.txt > name.txt

(popular-names.txtの中身をname.txtというファイル名で保存。リダイレクション「>」はファイル上書きを行い、「>>」はファイル追記を行う。)

 

その後、Pythonで次のプラグラムを実行する。

#pandasをインポート

import pandas as pd

#dfの定義。read_tableを使ってテキストファイルを読み込む。
df = pd.read_table('./popular-names.txt', header=None, sep='\t', names=['name', 'sex', 'number', 'year'])

# dfの長さを「len」(=length)で表示。

print(len(df))

出力

2780

len関数は文字列の長さなどを読み込むが、今回はテーブルデータなので、行数を数える。


unixコマンドでの確認

wc -l ./popular-names.txt

出力

2780 ./popular-names.txt


参考リンク

【言語処理100本ノック 2020】第2章: UNIXコマンド 

Pandasのread_tableでtxtファイルを読み込む方法 

データベースの用語を理解しよう 「テーブル」「レコード」「カラム」「フィールド」とは? 



0 件のコメント:

コメントを投稿