Tag Archives: サンプルコード

はじめに

先日、Pythonを使って、データを解析する機会がありました。
そんな時、「簡単なサンプルコードがあったら便利だ」と感じたため、ブログに残しておこうと思います。
サンプルコードは好きに使ってもらって構いません(大したコードではないので)
「もっとこうしたらいいのに」というご意見がありましたら、コメント欄までお願いいたします。

私の環境は以下の通りです。

  • Windows 10 64bit
  • Anaconda3 5.3.0
  • Python 3.7.0

 

例題

今回、例として用意した解析元のデータは、過去の気象データです。
この気象データは、気象庁のホームページから誰でも無料でダウンロードできます。

過去の気象データ・ダウンロード
https://www.data.jma.go.jp/gmd/risk/obsdl/index.php

ここでダウンロードできる気象データはCSVです。
Pythonはモジュールを使えばCSVも簡単に使いこなせるのですが、今回はテキストに落とし込んでいます。
(CSVファイルを開いて、テキストエディタにコピペしただけです)
以下に、解析元データ(気象データ)の一部抜粋を添付します。
この気象データを今回3つ用意しました。

weather_data1.txt / weather_data2.txt / weather_data3.txt :

ここから日付と平均気温のみを抽出することが、今回の課題です。
日付は一番左の列、平均気温は日付の隣の列です。他は不要なデータとします。

 

サンプルコード

サンプルコードは以下の通りです。

 

一つ一つ解説します。

これは、正規表現を使うようにするためのライブラリです。

 

これはファイル名です。今回ファイルが3つあるので、in_filesというリストに格納しています。

 

in_filesというリストから、ファイル名を一つ取り出してin_fileに入れています。
with openを使ってファイルを開きます。
第一引数にはファイル名を、第二引数は読み込み用でファイルを開くことを指定しています。

‘r’ とすれば、読み込みモード
‘w’ とすれば、書き込みモード
‘a’ とすれば、追記モード

ちなみにwith openで開いたファイルは、Closeが不要です。
as frで、開いたファイルを以降、frとして扱います。
for line in frで、1行ずつファイルを読み込むことができます。

 

re.matchは、文字列の先頭がパターンにマッチするかを調べます。
第一引数は検索したい正規表現を、第二引数は検索元を入力します。

正規表現の中で、カッコで囲んでいる箇所があります。
こうすることで、カッコで囲まれた部分にマッチした文字列を、”group(番号(1始まり))”とするだけでタプルで取得できます。
今回は、日付をgroup(1)、気温をgroup(2)としています。
この検索結果をm1に格納します。もし見つからなければm1にはNoneが入ります。

 

m1がNone以外、すなわち見つかった場合、日付と平均気温を出力します。
まず出力ファイル名を決めます。今回はファイル名に’convert.txt’を追加したものにしました。

出力ファイルを”追記モード”で開いて、それをfaとして扱います。
次にfa.writeで出力ファイルに書き込みます。

m1.group(1)は日付を、m1.group(2)は平均気温を意味します。
日付と平均気温の間には、タブを入れました。最後に改行をしています。

 

出力結果

以下が出力結果です。
ファイルと同じフォルダに、出力ファイルが生成されていると思います。
日付と平均気温だけが綺麗に抽出できています。

weather_data1convert.txt / weather_data2convert.txt / weather_data3convert.txt

 

以上です。

この記事がいいねと思ったら、以下のいいねボタンを押してください。
管理人のモチベーションがあがります(笑)

いいね! ←この記事いいね!
Loading...