Pythonを使ったcsvの読み込み、結合、保存
前回までの記事で、各都道府県ごとのデータを抽出しました。
これらのデータを、それぞれ開いてexcelで集計するというやり方で、グラフを作っていました。
それぞれのファイルをexcelで開くのも面倒です。
この記事では、Pythonをつかって、csvフォーマットのデータを連結する方法を記述します。
Python の使い方については、色々あるのですが、ここではJupyter Notebook を使って作業を進めています。
(参考:データ分析でかかせない!Jupyter Notebookの使い方)
Pythonはただの言語なので、そのままではファイルを開いたりグラフを書いたりすることができません。csvファイルをいじるためのライブラリの中でも最もメジャーなものの一つ、pandas を使いました。
コードから先に示して、一行一行説明します。
______________
import pandas as pd
osaka = pd.read_csv('COVID-19-osaka0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
hyogo= pd.read_csv('COVID-19-hyogo0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
kyoto = pd.read_csv('COVID-19-kyoto0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
nara = pd.read_csv('COVID-19-nara0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
shiga = pd.read_csv('COVID-19-shiga0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
keihanshin = pd.concat([osaka,hyogo,kyoto,nara,shiga],axis=1)
keihanshin.head()
keihanshin.to_csv('COVID-19kinki.csv', encoding="shift_jis")
______________
0. Jupyter Notebook を開き、操作したいcsvファイルがあるフォルダ(ディレクトリ)に移動する
Jupyter Notebook は、web ブラウザ上でpython を書くツールです。
コードの保存や共有が楽、環境構築が楽などの理由でよく使われているそうです。
これを開くと、まず自分のホームディレクトリのファイルの一覧が表示されると思います。
Shell のときもそうでしたが、プログラムを書いたりする人にとっては、デスクトップではなくホームディレクトリが基本なんですね。
デスクトップは、ホームディレクトリの下の階層にあります。
1. pandas を読み込む
import pandas as pd
pandasとは、データ処理を行う時に必要な様々な機能が入った便利なソフトのようなものです。エクセル的な。
python界では、ソフト、とは呼ばずにライブラリと呼ばれています。
import xxx で、ライブラリを読み込む事ができます。
pandasの機能を使いたいときには、pandas.XXXX みたいにコマンドを打ち込むことで、
その機能を使うことができます。
でも、毎回「pandas」と打ち込むのが面倒なので、「as pd」 として、略称を定めるわけです。
よく使われるライブラリなので、jupyter notebookの環境であれば、すでに勝手に入っていると思います。
入っていなかったら、インストール方法をググってください!
2. csvファイルを読み込む
osaka = pd.read_csv('COVID-19-osaka0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
pandasの中にある「.read()」 というコマンド(function)で、csvを読み込む事ができます。
どのライブラリのread? となるので、pd.read()で、pandasのread functionを使ってね、と指示を出しています。
読み込んだ内容に、名前をつけてやる必要があります。
それが、先頭の、 osaka = であったり、hyogo = です。
これで、読み込んだデータの名前が osaka や hyogo になります。
今回さらに、このreadの中には、3つのオプションが入っています。 read(A,B,C) です。
A. 読み込むファイル名の指定
まず、読み込みたいファイルの名前を入れましょう。
B. 文字コードの指定
私の記事を読みながら、csvファイルを作っている人は、エクセルで日本語を表示するために、文字コードがShift-JISになっているはずです。
そのままだと、読み込めません。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x91 in position 0: invalid start byte
というエラーが返ってきます。
このような文字コードの処理のために、encoding='cp932' という指定をしています。
大体、エラーの内容をコピーして、googleで検索すると、対処法が出てきます。
メジャーなライブラリを使う利点はここにもあります。
C. カラム(列)の名前をつけてやる
もともとのファイルには、列の名前が入っているのですが、私は飛ばしてしまっています。
名前をつけてやらないと、1行目がヘッダーとして取り込まれてしまうので、名前を入れてやっているのが、3つ目のオプションです。
names=['1','2','3',---] とすることで、列の名前を1, 2, 3 --- と名付けることができます。
3. csvファイルを結合する
keihanshin = pd.concat([osaka,hyogo,kyoto,nara,shiga],axis=1)
ようやく、この記事でやりたいことにたどり着きました。
3' 結果を確認する
keihanshin.head()
ちゃんと結合できているか不安ですよね。
その確認が、この行です。
head() で、そのファイルの先頭5行が書き出されます。
head(1)だと、1行だけです。
4. csvファイルを書き出す
keihanshin.to_csv('COVID-19kinki.csv', encoding="shift_jis")
to_csv() で、ファイルをcsvフォーマットで書き出すことができます。
先程作った、keihanshin という名前のデータを、'COVID-19kinki.csv' という名前で書き出せという指示をしています。
文字コードがここでも問題になるので、encoding="shift_jis"で、Shift-JISを指定しています。
まとめてcsv ファイルを作りましたが、もう少しうまくやれば、読み込んだcsvからそのままフィギュアを作っていくことも可能です。
今度は、そのレシピを挙げて見たいと思います。
__________________
参考にした記事は以下の通りです。
concat の使い方
http://sinhrks.hatenablog.com/entry/2015/01/28/073327
read.csvでエラーがでた!
https://qiita.com/tackey/items/5b7b2be23af60335fe11
ヘッダー行の処理
https://life-freedom888.com/pandas-csv-header/
できたデータをcsvとして出力
https://pythondatascience.plavox.info/pandas/データフレームを出力する
これらのデータを、それぞれ開いてexcelで集計するというやり方で、グラフを作っていました。
それぞれのファイルをexcelで開くのも面倒です。
この記事では、Pythonをつかって、csvフォーマットのデータを連結する方法を記述します。
Python の使い方については、色々あるのですが、ここではJupyter Notebook を使って作業を進めています。
(参考:データ分析でかかせない!Jupyter Notebookの使い方)
Pythonはただの言語なので、そのままではファイルを開いたりグラフを書いたりすることができません。csvファイルをいじるためのライブラリの中でも最もメジャーなものの一つ、pandas を使いました。
コードから先に示して、一行一行説明します。
______________
import pandas as pd
osaka = pd.read_csv('COVID-19-osaka0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
hyogo= pd.read_csv('COVID-19-hyogo0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
kyoto = pd.read_csv('COVID-19-kyoto0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
nara = pd.read_csv('COVID-19-nara0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
shiga = pd.read_csv('COVID-19-shiga0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
keihanshin = pd.concat([osaka,hyogo,kyoto,nara,shiga],axis=1)
keihanshin.head()
keihanshin.to_csv('COVID-19kinki.csv', encoding="shift_jis")
______________
0. Jupyter Notebook を開き、操作したいcsvファイルがあるフォルダ(ディレクトリ)に移動する
Jupyter Notebook は、web ブラウザ上でpython を書くツールです。
コードの保存や共有が楽、環境構築が楽などの理由でよく使われているそうです。
これを開くと、まず自分のホームディレクトリのファイルの一覧が表示されると思います。
Shell のときもそうでしたが、プログラムを書いたりする人にとっては、デスクトップではなくホームディレクトリが基本なんですね。
デスクトップは、ホームディレクトリの下の階層にあります。
1. pandas を読み込む
import pandas as pd
pandasとは、データ処理を行う時に必要な様々な機能が入った便利なソフトのようなものです。エクセル的な。
python界では、ソフト、とは呼ばずにライブラリと呼ばれています。
import xxx で、ライブラリを読み込む事ができます。
pandasの機能を使いたいときには、pandas.XXXX みたいにコマンドを打ち込むことで、
その機能を使うことができます。
でも、毎回「pandas」と打ち込むのが面倒なので、「as pd」 として、略称を定めるわけです。
よく使われるライブラリなので、jupyter notebookの環境であれば、すでに勝手に入っていると思います。
入っていなかったら、インストール方法をググってください!
2. csvファイルを読み込む
osaka = pd.read_csv('COVID-19-osaka0413.csv',encoding='cp932',names=['通し番号', '確定日', '診断地','居住地'])
pandasの中にある「.read()」 というコマンド(function)で、csvを読み込む事ができます。
どのライブラリのread? となるので、pd.read()で、pandasのread functionを使ってね、と指示を出しています。
読み込んだ内容に、名前をつけてやる必要があります。
それが、先頭の、 osaka = であったり、hyogo = です。
これで、読み込んだデータの名前が osaka や hyogo になります。
今回さらに、このreadの中には、3つのオプションが入っています。 read(A,B,C) です。
A. 読み込むファイル名の指定
まず、読み込みたいファイルの名前を入れましょう。
B. 文字コードの指定
私の記事を読みながら、csvファイルを作っている人は、エクセルで日本語を表示するために、文字コードがShift-JISになっているはずです。
そのままだと、読み込めません。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x91 in position 0: invalid start byte
というエラーが返ってきます。
このような文字コードの処理のために、encoding='cp932' という指定をしています。
大体、エラーの内容をコピーして、googleで検索すると、対処法が出てきます。
メジャーなライブラリを使う利点はここにもあります。
C. カラム(列)の名前をつけてやる
もともとのファイルには、列の名前が入っているのですが、私は飛ばしてしまっています。
名前をつけてやらないと、1行目がヘッダーとして取り込まれてしまうので、名前を入れてやっているのが、3つ目のオプションです。
names=['1','2','3',---] とすることで、列の名前を1, 2, 3 --- と名付けることができます。
3. csvファイルを結合する
keihanshin = pd.concat([osaka,hyogo,kyoto,nara,shiga],axis=1)
ようやく、この記事でやりたいことにたどり着きました。
concat([A,B,C]) で、複数のcsv ファイルを結合することができます。
今回、横に横にとcsvを足して行きたかったので、axis = 1 というオプションをつけています。
これがない場合、csvファイルは縦に結合されます。
結合してできた、大きなcsvファイルは、"keihanshin"という名前が与えられました。
3' 結果を確認する
keihanshin.head()
ちゃんと結合できているか不安ですよね。
その確認が、この行です。
head() で、そのファイルの先頭5行が書き出されます。
head(1)だと、1行だけです。
4. csvファイルを書き出す
keihanshin.to_csv('COVID-19kinki.csv', encoding="shift_jis")
to_csv() で、ファイルをcsvフォーマットで書き出すことができます。
先程作った、keihanshin という名前のデータを、'COVID-19kinki.csv' という名前で書き出せという指示をしています。
文字コードがここでも問題になるので、encoding="shift_jis"で、Shift-JISを指定しています。
まとめてcsv ファイルを作りましたが、もう少しうまくやれば、読み込んだcsvからそのままフィギュアを作っていくことも可能です。
今度は、そのレシピを挙げて見たいと思います。
__________________
参考にした記事は以下の通りです。
concat の使い方
http://sinhrks.hatenablog.com/entry/2015/01/28/073327
read.csvでエラーがでた!
https://qiita.com/tackey/items/5b7b2be23af60335fe11
ヘッダー行の処理
https://life-freedom888.com/pandas-csv-header/
できたデータをcsvとして出力
https://pythondatascience.plavox.info/pandas/データフレームを出力する
Cập nhật link vào Son club chính thức, an toàn và không bị chặn bởi các nhà mạng. Truy cập Son club ngay để tận hưởng không gian cá cược đẳng cấp, nạp rút siêu tốc 1:1 và hỗ trợ khách hàng 24/7.
返信削除Website: https://sonclubb.live/
Địa chỉ: 253 Dương Đình Cúc, Tân Nhựt, Hồ Chí Minh, Việt Nam
Điện thoại: 0917 364 528
Email: support@sonclubb.live
Hashtag: #sonclub #sonclubcasino #slotgamesonclub #conggamesonclub
Cập nhật link vào nhà cái B52 mới nhất không bị chặn. Hướng dẫn tải app B52 cho điện thoại iOS và Android mượt mà, không giật lag. Khám phá thế giới cá cược casino trực tuyến đỉnh cao.
返信削除Website: https://b52z.org/
Email: support@b52club.net
Số điện thoại: 0936 525 252
Địa chỉ: 236 Lê Thánh Tôn, Phường Bến Thành, Hồ Chí Minh 70000, Vietnam
123bet là lựa chọn hàng đầu cho người yêu thích cá cược thể thao và casino trực tuyến. Hệ thống bảo mật cao, hỗ trợ 24/7 cùng nhiều chương trình khuyến mãi hấp dẫn mỗi tuần.
返信削除Website: https://123bett.io/
Địa chỉ: 86-549 Đ. Vĩnh Khánh, Khánh Hội, Hồ Chí Minh, Vietnam
Điện thoại: 0938493847
Email: 123bettio@gmail.com
Hashtag: #123bet #123betoi #game123bet #trangchu123bet #link123bet
Sunwin mang đến không gian cá cược đẳng cấp quốc tế. Khám phá các sảnh bài live casino casino sống động, tỷ lệ ăn thưởng cao nhất thị trường và dịch vụ hỗ trợ khách hàng chuyên nghiệp 24/7.
返信削除Website: https://sun-win.eu.com/
Địa chỉ: 1/Đội Cấn/43 343, Tổ 5A, Ngọc Hà, Hà Nội, Vietnam
Điện thoại: 0937836878
Email: sunwineucom@gmail.com
Hashtag: #sunwin #taigamesunwin #sunwineucom #linksunwin #trangchusunwin
Hitclub là cổng game bài đổi thưởng đỉnh cao châu Á. Đăng ký tham gia ngay hôm nay để nhận code tân thủ cực giá trị và trải nghiệm kho game slot, tài xỉu xanh chín, bảo mật tuyệt đối.
返信削除Website: https://hitclub1.dev/
Địa chỉ: 2 Trần Khắc Chân, Tân Định, Hồ Chí Minh, Vietnam
Điện thoại: 0938938293
Email: hitclub1dev@gmail.com
Hashtag: #hitclub #hitclub1dev #taiapphitclub #apphitclub #trangchuhitclub
game bai doi thuong uy tín 2026. Cập nhật link tải chính thức iOS/Android của 10+ cổng game xanh chín. Hệ thống bảo mật thông tin, rút tiền qua ngân hàng, ví điện tử cực nhanh trong 5 phút. Xem ngay!
返信削除Website: https://gamebaidoithuong88.dev/
Địa chỉ: Hẻm 263 Thạch Lam, Phú Thạnh, Hồ Chí Minh, Vietnam
Điện thoại: 0937839489
Email: gamebaidoithuong88dev@gmail.com
Hashtag: #gamebaidoithuong #gamebaidoithuong88dev #topgamebaidoithuong #topgamedoithuong