超初心者向けPython入門講座

仕事の効率化などにpythonを使いたい!けど何から始めらばよいか分からない、といった初心者の方向けに、pythonの導入から実用的な使い方まで、極力分かりやすくまとめたサイトです。

numpy pandas python

Pythonでcsvファイルへの書き出し(list,numpy,pandas対応)

投稿日:2020-07-04 更新日:

今回は、「csvファイル」へのデータの書き出しについて解説していこうと思います。csvファイルとは何か?については、本サイトの「Pythonでcsvファイルを読み込んでみよう」で解説しているので、そちらをご覧ください。

解説内容

 

1. listデータのcsvへの書き出し

まずは、データがlist形式の場合の書き出し方法について解説します。

listをcsvに書き出す場合は、「csv」というライブラリ「writer」オブジェクトを使用します。

使用方法は簡単で、下のように使います。

#まず、下のようにwirteオブジェクトを宣言
write = csv.writer(出力ファイル)

#データが1次元の場合の書き出し
write.writerow(データ)
#データが2次元の場合の書き出し
write.writerows(データ)

#ただし、下のようにいっぺんに書くこともできます
csv.writer(出力ファイル).writerow(データ)

では、実際に使用例を下で見てみましょう。

 

1.1. 1次元データの書き出し

まずは、下のコードを実行してみてください。

import csv
f = open('out.csv', 'w')
data = ['あいうえお','12345']
writer = csv.writer(f)
writer.writerow(data)
f.close()

上のコードを実行すると、下の画像のような「out.csv」というcsvファイルができます。

1次元配列は特に注意することもないので、上で解説した使い方を使えば問題ありません。

 

1.2. 2次元データの書き出し(空行削除解説付き)

次に、2次元データの書き出しについて解説します。まずは、下のコードを実行してみましょう。

import csv
f = open('out2.csv', 'w')
data = [['あいうえお','12345'],['かきくけこ','678910']]
writer = csv.writer(f)
writer.writerows(data)
f.close()

すると、出力はできるのですが、下のように空の行が入ってしまいます。

 

そこで、それを防ぐためには、ファイルを開く際に「newline=”」を用いることで、空の行が挿入されるのを防ぐことができます。

※空の行は、改行コードと呼ばれるものの処理の仕方により挿入されてしまうため、「newline=”」と改行コードを指定してやることで防ぐことができます。

import csv
f = open('out2.csv', 'w', newline='')
data = [['あいうえお','12345'],['かきくけこ','678910']]
writer = csv.writer(f)
writer.writerows(data)
f.close()

上のように書くことで、2次元配列も出力することができました。

Point
  • listの書き出しは「csv」ライブラリの「writer」オブジェクトを使用
  • listが1次元の場合、writerowメソッドを使用
  • listが2次元の場合、writerowsメソッドを使用
  • 2次元を書き出す場合は、ファイルを開く際に「newline=”」を用いて空行が挿入されないようにする

 

2. numpyデータのcsvへの書き出し

次に、numpyデータのcsvへの書き出しについて解説します。

numpyをcsvへ書き出す場合は、テキストへの書き出しと同様に「savetxt」を使用します。

ただし、csvは「カンマ区切り」なので、区切り文字を「,」に指定して保存します。区切り文字の指定には「delimiter」を使用します。

では、実際のコードを確認してみましょう。

import numpy as np
data = np.arange(9).reshape(3,3)
np.savetxt("outnp.csv", data, delimiter=",")

すると、上のようにcsv形式で保存することができます。

使い方は、「numpy.savetxt(ファイル名, データ, delimiter=”,”)」のように使います。

 

ただし、デフォルトでは文字コードが「”%.18e”」になっているため、気になる方は下のように「fmt」を使ってフォーマットを指定しましょう。

#整数の場合
np.savetxt("outnp.csv", data, delimiter=",", fmt="%d")
#実数(少数以下5桁)の場合
np.savetxt("outnp.csv", data, delimiter=",", fmt="%.5f")

他にもいろいろな文字フォーマットがあるので、他のフォーマットを使いたい方は調べて使ってみてください。

Point
  • numpyの書き出しは、テキストへの書き出しと同様に「savetxt」を使用
  • 「delimiter」を使用し区切り文字を「,」に指定
  • 文字コードは「fmt」を使ってフォーマットを指定

 

3. pandasデータのcsvへの書き出し

最後に、pnadasで作成したデータフレームをcsvへ書き出す方法について解説します。

pandasには、「to_csv」というcsvへ書き出す用のメソッドが用意されているので、それを使用します。

使用方法は、「df.to_csv(ファイル名)」という形で使います。では、実際にコードを確認してみましょう。

import pandas as pd
df = pd.DataFrame({"名前":["太郎", "五郎", "花子"],
                   "身長":[169, 175, 160],
                   "成績":[90, 70, 85]})
df = df.set_index('名前')
df.to_csv("output_pd.csv", encoding="shift_jis")

すると、下のようにcsvファイルへ書き出すことができました。

※日本語を使う場合は、「encoding=”shift_jis”」を使わないと文字化けしてしまいます。

 

また余談ですが、csv以外へ書き出したい場合は「sep」を使うことで区切り文字を指定することができます。

import pandas as pd
df = pd.DataFrame({"名前":["太郎", "五郎", "花子"],
                   "身長":[169, 175, 160],
                   "成績":[90, 70, 85]})
df = df.set_index('名前')
df.to_csv("output_pd.txt", encoding="shift_jis", sep="\t")

すると、下のようにテキスト形式でも保存できます。

※上のコードでは、区切り文字を「タブ(Tab)」に指定しています。

Point
  • pandasの書き出しは「to_csv」というcsvへ書き出すメソッドを使用
  • 日本語を使う場合は、「encoding=”shift_jis”」を使わないと文字化けする
  • sv以外へ書き出したい場合は「sep」を使うことで区切り文字を指定

 

4. まとめ

今回は、pythonのデータをcsvへ書き出す方法について解説しました。テキストファイルへの書き出しや、もう少し丁寧な解説が見たい方は、本サイトの「Pythonでテキストファイル・csvファイルへの書き出しをしてみよう(write)」で解説しておりますので、そちらをご覧ください。

このサイトで皆さんの疑問が少しでも解決出来たら幸いです。 

なお、このサイトでは初心者の方向けに「Python初心者入門講座」という講座を作成していますので、気になった方はそちらもご覧ください。

スポンサーリンク




スポンサーリンク




-numpy, pandas, python
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

第14章 Pythonでフォルダを作成してみよう

この章では、ファイルに記入したフォルダ名を読み取り、複数のフォルダを一括で作成する方法について解説します。 解説内容 フォルダを作成してみよう ファイルからフォルダ名を読み取って作成   1.フォルダ …

PythonのpandasでExcelを操作しよう(読み込み、書き込み)

今回は、Pythonのライブラリである「pandas」を用いたExcelの読み書きについて解説したいと思います。 他のライブラリを用いてもエクセルを操作することはできますが、「pandas」は使う機会 …

Pythonで2次元の平面分布図を作成しよう(matplotlib)

matplotlibは、Pythonでグラフを作成する際に便利なライブラリです。 ここでは、matplotlibを用いて、Pythonで平面的な分布図を作成する方法について解説したいと思います。 解説 …

matplotlibの使い方(figure・axesや複数グラフの配置・サイズについて)

matplotlibでグラフを作成する方法には、大きく分けて2つの種類があります。 しかし、ネット上ではこの2種類のコードが混在しているため、使い分けについて意識しておかないと混乱することがあります。 …

第11章 Pythonでテキストファイルを読み込んでみよう(read、readlines、readline)

9章では、「input」を使ってプログラムの外から値を入力しましたね。この章では、「テキストファイル」からのデータの読み込みについて解説したいと思います。(次章では「csvファイル」の読み込みについて …

スポンサーリンク





初めまして、サイトを運営しているキユと申します。

このサイトでは、まったくの初心者がPythonを使って、単純作業や仕事を効率化できるようになるまでに必要なことをまとめています。