Pythonでいろいろな処理を自動化し
ログなどを残す際はファイル出力が必要となります。
今回の記事では数あるPythonの利用方法の中で
といったファイル保存に特化した内容をまとめています。
使うときには忘れがちな保存関係をまとめました。
それでは実際のコードを用いてファイルの読み書きを行います。
CSVでファイルを読み書きする
学術系では必須のcsvの入出力について学びます。
一般企業ではエクセル形式への読み書きが多いと思います。
csvは軽量のテキストなのでデータ処理の基本となります。
一次元配列のcsvへの書き込み
import csv list = ["python","csv","test"] with open('sample1.csv', 'w') as f: writer = csv.writer(f, lineterminator='\n') # 改行コード(\n)を指定しておく writer.writerow(list) # listを渡す
二次元配列のcsvへの書き込み
二次元配列の書き込みにはwriterowsメソッドを使います。
list2 = [[1, 2, 3], [10, 20, 30], [100, 200, 300]] with open('sample2.csv', 'w') as f: writer = csv.writer(f, lineterminator='\n') # 改行コード(\n)を指定しておく writer.writerows(list2) # 二次元配列の場合
withを使わずにCSVに書き込みする
with句を使わずに下記のように書くこともできます。
読み書きモードは指定する モードは
r 読取 w 上書 a 追記
となります。
import csv f = open('sample3.csv', 'a') writer = csv.writer(f, lineterminator='\n') writer.writerow(list) writer.writerows(list2) f.close()
csvファイルの読み込み
import csv file = './sample1.csv' f = open(file, 'r') rows = csv.reader(f) for row in rows: # 一行ずつ読み出す print(row) f.close()
pandasを使ってcsvを読み取る
簡単にデータフレーム化もできます。
import pandas as pd df = pd.read_csv('sample1.csv')
sqlite3を使ってデータベースに書き込む
sqlite3を使ってデータベースを作る
import sqlite3 from contextlib import closing dbname = 'database.db' with closing(sqlite3.connect(dbname)) as conn: c = conn.cursor() # executeメソッドでSQL文を実行する create_table = '''create table users (id int, name varchar(64), age int, gender varchar(32))''' c.execute(create_table) conn.close()
sqlite3を使ってデータを挿入する
import sqlite3 from contextlib import closing with closing(sqlite3.connect(dbname)) as conn: c = conn.cursor() # SQL文に値をセットする場合は,Pythonのformatメソッドなどは使わずに, # セットしたい場所に?を記述し,executeメソッドの第2引数に?に当てはめる値を # タプルで渡す. sql = 'insert into users (id, name, age, gender) values (?,?,?,?)' user = (1, 'Taro', 20, 'male') c.execute(sql, user) # 一度に複数のSQL文を実行したいときは,タプルのリストを作成した上で # executemanyメソッドを実行する insert_sql = 'insert into users (id, name, age, gender) values (?,?,?,?)' users = [ (1, 'Taro', 20, 'male'), (2, 'Shota', 54, 'male'), (3, 'Nana', 40, 'female'), (4, 'Tooru', 78, 'male'), (5, 'Saki', 31, 'female') ] c.executemany(insert_sql, users) conn.commit() select_sql = 'select * from users' for row in c.execute(select_sql): print(row) conn.close()
pandasを使ってデータベースの読み書きをする
pandasを使ってsqlite3を読みだす
import pandas as pd import sqlite3 dbname = 'database.db' conn = sqlite3.connect(dbname) c = conn.cursor() df_sql = pd.read_sql_query("select * from users", conn) conn.close()
さらにdataframeでsqlite3に行追加する
df_ins = pd.DataFrame(6, 'yuta', 24, "male", columns=df_sql.columns) df_ins.to_sql("users", conn, if_exists='append', index=None)
テーブルまるごとをDataFrameのレコードで入れ替える場合はif_exists='replace'とする。
Python学習のおススメ
Pythonはパターンで学習できます。
実際のコードを写経して身に着けるのがおすすめです
簡単な実行文から体系的に学べるPyQがおすすめです。
ブラウザ上でPythonに特化した写経を1000個以上実施可能です。
初学習で終える自信がない方向けの最初の一冊は
「Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ」がおすすめです。
2冊目は(あるいは学習意欲の高いかたは)Pythonの基礎知識が隅々まで解説されている「入門Python3」がおすすめです。
業務で自動化をしたい、など目標がふんわりとしている方には
「退屈なことはPythonにやらせよう」もおススメです。
こちらの本は自動化に集中した内容となっており、流し読みで自分のスキルを高めることができます。僕もだいぶお世話になりました(笑)
有料の動画講座に関して言えばUdemyさんがおすすめです。
こちらのサイトは初学がある程度すすんでいる方向けです。
有料だけに講座ごとのジャンルが豊富で学びたい講座を選択して選ぶことが出来ます。
PythonではAI・データサイエンスなど最先端のIT技術からプレゼンなどビジネススキルに関する講座まで10万以上(※海外講座含む)あるため、自分が学びたい講座をみつけることができます。
まとめ
今回の記事では
をまとめました。
お疲れさまでした