ぬこ将軍です🐈
プログラミング言語Pythonを使うようになってから、部署内でもそれが知られているのでPythonに関する相談がたまに来るようになりました。
みんな困りごとが多種多様なのですぐに解決できないものもありますが、自分自身の更なるスキルアップのきっかけになるので嬉しい面もあります。
今回は「Pythonでのテキストファイルの取り扱い」について書こうかと思います。
前回はPythonでテキストファイル内の必要箇所を抽出してデータフレーム(2次元の表形式データ)を作りました。
nukoshogun.hatenablog.com
「テキストファイルで出力される内容からデータとして整理したい部分を抽出する」という、色んな業界で結構ありがちな面倒作業をラクにする方法なのですが、実はもっと簡単な方法があります!
- プログラミング言語Pythonを始めたばかりで、どんどん知識を吸収したい!
- Pythonでテキストファイルからのデータ抽出を簡単に出来るようにしたい!
そんな方々の参考になりましたら幸いです。面倒な作業も、pythonなら効率化できる可能性があります!
Pythonでテキストファイルから必要箇所を抽出&データ化する方法
前回と同様に、以下画像のテキストファイルを用いようと思います。
⇓
以下にもう一度特徴を書きます。テキストファイル出力だと結構ありがちではないでしょうか?
- 1,2行目にデータに関する説明や日付が書かれている。
- 空白の行がある(この例だと3行目)。
- 4行目にデータの列名が書かれている。
- 5~7行目に値が書かれている。
- 4~7行目をデータ化の必要箇所として抽出したい
このような特徴をもつテキストファイルからどのようにデータを抽出するのか、次から説明していきます。
・・・が、実は前回よりめっちゃ簡単ステップです!
pandasでテキストファイルを読み込む
pandasをインポートし、パス文字列を変数pathに代入したら、【pd.read_table(path, skiprows = 3)】でOKです。
実は型変換も不要で、最初から数字は数値型(int型)になっています。
今回はたまたま数値型でしたが、読み込むファイルによっては型変換が必要な場合があるかもです。その場合は【 df["指定したい列名"].astype(変換後の型)】で型変換できます。
参考記事
【読み込みからデータ抽出】Pythonでテキストファイルを操る初心者向けガイド - ゼロからの業務効率化ノート
このシンプルな方法について詳しく書くと、まず【pd.read_table("パス文字列"またはパス文字列を代入した変数)】で指定したパスにあるテキストファイルを、タブを区切り文字として読み込むことができます。
テキストファイルから出力されたものでデータを抽出する場合、多くテキストファイルでは各要素がタブで区切られていると思います。
そしてもう1つ。【skiprows】という引数を使っていますが、これは【skiprows = 数値】という形で書くことで、ファイルの先頭行から指定した数字分だけスキップして読み込めます。
今回の場合は4行目以降を読み込みたかったので、skiprows = 3と書いたのです。
skiprows= の後に書く数字はスキップしたい行数を書きます。
Pythonだと順番は0始まりですが、そこと混同しないよう気をつけてください。スキップしたい行数なので1始まりです。
そんな感じで、短いコードで簡単にテキストファイルからデータ作成に成功しました!
Pythonでテキストファイルを操る方法まとめ
今回のことをまとめると以下の通りです。
- pandasでテキストファイルを読み込む
以上
テキストファイルとして出力されるものから必要な箇所だけ抽出してデータ整理に利用したい、というのは結構ありがちなシチュエーションですが、Pythonを活用することで実現可能です!
テキストファイルを色々操作するという点ではopen関数を使うことも出来ますが、データを作る場合はpandasの方が便利ということがあります。
特に自分のような研究開発職など、データを整理する場面が多い人はPythonのpandasは知っておくと良いと思います。
pandasで出来ることは多く、私もまだ把握しきれていないので(笑)
プログラミング未経験の方にこそPythonの勉強はオススメです!その理由を自分なりに考えてみました。
⇓
【Python歴約1年が考える】プログラミング未経験者におすすめの理由 ─ Pythonの魅力とは? - ゼロからの業務効率化ノート