今回はPythonで様々なファイルを
取り扱う方法についてです
解説動画はこちら
今回取り扱うファイル形式は
以下の通りです
取り扱う方法についてです
解説動画はこちら
今回はPython言語で色々なファイルを取り扱う方法のまとめ
様々な形式のファイルの確認、再生、編集方法について
今回取り扱うファイル形式は
以下の通りです
テキストファイル
txt , json , csv
エクセルファイル
xlsx
画像ファイル
png , jpeg
動画ファイル
mp4 , mov
音声ファイル
mp3 , WAV , AIFF
全体的にファイル名やファイルパスなどは
書き換えて行って下さい
1.テキストファイル
拡張子:.txt
jsonライブラリで
json.loadを使います
読み込み後のデータは
辞書型になっています
Jsonファイルをの書き込み
辞書型のデータを
json.dumpでjsonファイルに書き込みできます
読み込んだあとに
カンマで区切ればデータ化できます
CSVライブラリを用いると いい感じでカンマ区切りを行ってくれます
CSVファイルの書き込みは
テキストファイル同様にし
拡張子を「.csv」にして
カンマ区切りのテキストにすれば
良いです
Pandasライブラリで開く場合
開いた場合のデータ形式は
「データフレーム」となります
PandasライブラリでCSVファイルの書き込み
開いた場合のデータ形式は「データフレーム」となります
openpyxlでエクセルファイルの読み込み
openpyxlで行列を指定して閲覧
opencvで画像の読み込み
要インストール(opencv)
そのまま読み込みすると
色の順番がBGR(青、緑、赤)になってしまうので
RGBに変換が必要です
モザイク処理なんかも
行う事ができます
6.動画ファイル
拡張子 : .mp4 .mov
静止画の集まり + 音声になっているので
opencvで開けます
opencvでのファイルの読み込み
Jupyter Notebookで動画ファイルの再生
単純なプレビューなら
Jupyter Notebookで行う事ができます
7.音声ファイル
拡張子 : .mp3 .wav .aiff
Jupyter Notebookで音声ファイルの再生
Librosaで音声波形の表示
Librosaでスペクトログラムの表示
音声を周波数分析して色による強さ
周波数、時間の3次元表示
こんな感じで、Python言語では
様々な形式のファイルを扱う事ができます
上記で世の中にある
ほとんどのファイル操作が行えると思いますので
ファイルを取り扱って自動化したい場合は
参考にしてみて下さい
それでは
全体的にファイル名やファイルパスなどは
書き換えて行って下さい
1.テキストファイル
拡張子:.txt
プレーンテキストのことで
文字コードによって表される
データだけが含まれるファイル形式です
with openの構文で
ファイルを開けます
一気にファイルを開く方法
ただし、上記の方法だと
サイズの大きいファイルを開くと
固まってしまう可能性があります
そんな場合は1行づつ読み込みします
ファイルを1行づつ開く方法
この場合は任意の行数でプレビューする事で
大きなサイズのファイルも開けます
テキストファイルの書き込み
with open構文に引数 w を追加すれば
書き込みを行えます
Jsonファイルを開く方法文字コードによって表される
データだけが含まれるファイル形式です
with openの構文で
ファイルを開けます
一気にファイルを開く方法
# テキストファイルを開く with open('file/sample_text.txt') as _f: text = _f.read() print(text)
ただし、上記の方法だと
サイズの大きいファイルを開くと
固まってしまう可能性があります
そんな場合は1行づつ読み込みします
ファイルを1行づつ開く方法
# テキストファイルを開く with open('file/sample_text.txt') as _f: for i,row in enumerate(_f): # 特定行数でブレイクする if i>0: break print(row)
この場合は任意の行数でプレビューする事で
大きなサイズのファイルも開けます
テキストファイルの書き込み
with open構文に引数 w を追加すれば
書き込みを行えます
# テキストファイルを書き込みする with open('file/out.txt','w') as _w: _w.write('さんぷる\n') _w.write('テキスト') _w.write('書いてみよう\n')
2.Json形式
拡張子 : .json
辞書形式のテキストファイルで
文字列のキーと値のペアをコロンで対
コンマ区切り、全体を波カッコ { } で括る
ファイル形式です
jsonライブラリで
json.loadを使います
import json with open('file/sample_json.json') as _f: json_data = json.load(_f) print(json_data) print(type(json_data)) print(len(json_data))
読み込み後のデータは
辞書型になっています
Jsonファイルをの書き込み
辞書型のデータを
json.dumpでjsonファイルに書き込みできます
sample_dict = {"A":1,"B":2,"C":{"D":444,"E":666}} with open('file/out.json' , 'w') as _w: json.dump(sample_dict , _w , ensure_ascii=False)
3.CSVファイル
拡張子 : .csv
「 , 」カンマ区切りのテキストファイル
テキストファイル同様
with構文で読み書きが行えます
読み込んだあとに
カンマで区切ればデータ化できます
# CSVファイルを開く with open('file/sample_csv.csv') as _f: for i,row in enumerate(_f): rows = row.replace('\n','').split(',') print(rows)
CSVライブラリを用いると いい感じでカンマ区切りを行ってくれます
# CSVライブラリを使用する場合 import csv with open('file/sample_csv.csv') as _f: reader = csv.reader(_f) for row in reader: print(row)
CSVファイルの書き込みは
テキストファイル同様にし
拡張子を「.csv」にして
カンマ区切りのテキストにすれば
良いです
Pandasライブラリで開く場合
開いた場合のデータ形式は
「データフレーム」となります
import pandas as pd df = pd.read_csv('file/sample_csv.csv') df
PandasライブラリでCSVファイルの書き込み
df.to_csv('file/out.csv' , index=False)
4.エクセルファイル
拡張子 : .xlsx
MicrosoftのExcel形式
Pandasライブラリで開く場合
開いた場合のデータ形式は「データフレーム」となります
綺麗な表形式になっていないとうまく開けないので
注意が必要です
import pandas as pd df = pd.read_excel('file/pop_area_2009.xlsx') df
openpyxl を用いる方法
エクセル操作用のライブラリで
閲覧・編集・保存など様々な操作を行えます
要インストール(openpyxl)
openpyxlでエクセルファイルの読み込み
import openpyxl wb = openpyxl.load_workbook('file/pop_area_2009.xlsx') # ワークブック内のアクティブなシートを取得 ws = wb.active # セルA1を表示 print(ws["A1"].value)
openpyxlで行列を指定して閲覧
for r in range(1,5): for c in range(1,5): val = ws.cell(row=r, column=c).value print(val , end='\t') print()
5.画像ファイル
拡張子 : .png .jpegなど
静止画などの画像形式
PILでイメージの読み込み
Matplotlibで表示
import matplotlib.pyplot as plt from PIL import Image %matplotlib inline # 画像の読み込み im = Image.open("file/kosakana.png") # 表示サイズの指定 plt.figure(figsize=(10, 12)) # 画像の表示 plt.imshow(im) # 軸の表示の削除 plt.axis('off') plt.show()
opencvで画像の読み込み
要インストール(opencv)
そのまま読み込みすると
色の順番がBGR(青、緑、赤)になってしまうので
RGBに変換が必要です
import matplotlib.pyplot as plt import cv2 %matplotlib inline # 画像の読み込み im_cv = cv2.imread("file/kosakana.png") # 画像のBGRをRGBに変換する im_rgb = cv2.cvtColor(im_cv, cv2.COLOR_BGR2RGB) # 表示サイズの指定 plt.figure(figsize=(10, 12)) # 画像の表示 plt.imshow(im_rgb) # 軸の表示の削除 plt.axis('off') plt.show()
モザイク処理なんかも
行う事ができます
# 画像の読み込み im_cv = cv2.imread("file/kosakana.png") # 画像のBGRをRGBに変換する im_rgb = cv2.cvtColor(im_cv, cv2.COLOR_BGR2RGB) # モザイク処理を行う ratio = 0.06 tmp_img = cv2.resize(im_rgb, None, fx=ratio, fy=ratio, interpolation=cv2.INTER_NEAREST) dst = cv2.resize(tmp_img, im_rgb.shape[:2][::-1], interpolation=cv2.INTER_NEAREST) # 表示サイズの指定 plt.figure(figsize=(10, 12)) # 画像の表示 plt.imshow(dst) # 軸の表示の削除 plt.axis('off') plt.show()
6.動画ファイル
拡張子 : .mp4 .mov
静止画の集まり + 音声になっているので
opencvで開けます
opencvでのファイルの読み込み
import cv2 cap = cv2.VideoCapture('file/kosakana.mp4') # データ型 print(type(cap)) # 動画のサイズ print(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) print(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # フレームレート print(cap.get(cv2.CAP_PROP_FPS)) # フレーム数 print(cap.get(cv2.CAP_PROP_FRAME_COUNT)) # 秒数 print(cap.get(cv2.CAP_PROP_FRAME_COUNT) / cap.get(cv2.CAP_PROP_FPS))
Jupyter Notebookで動画ファイルの再生
単純なプレビューなら
Jupyter Notebookで行う事ができます
from IPython.display import Video Video('file/result_voice.mp4',width=600)
7.音声ファイル
拡張子 : .mp3 .wav .aiff
Jupyter Notebookで音声ファイルの再生
from IPython.display import Audio Audio('file/kosakana.wav')
Librosaライブラリを用いる方法
Pythonの音声解析用のライブラリで
様々な解析を行う事ができます
要インストール(librosa)
下記はバージョン0.9.2のコードです
バージョンによりメソッドが
かなり異なるので注意が必要です
Librosaで音声ファイルの読み込み
Librosaで音声ファイルの読み込み
import librosa import librosa.display import numpy as np import matplotlib.pyplot as plt import warnings warnings.simplefilter('ignore') %matplotlib inline print(librosa.__version__) file_path = 'file/kosakana.wav' # 音声をnumpyのndarrayに読み込みする y, sr = librosa.load(file_path , sr=None, mono=False) print(y.shape) print(type(y)) # サンプリング周波数 print(sr)
Librosaで音声波形の表示
plt.figure(figsize=(12,6)) librosa.display.waveshow(y, sr) plt.show()
Librosaでスペクトログラムの表示
音声を周波数分析して色による強さ
周波数、時間の3次元表示
y, sr = librosa.load(librosa.ex('choice'), duration=15) fig, ax = plt.subplots(nrows=2, ncols=1, sharex=True ,figsize=(12, 10)) D = librosa.amplitude_to_db(np.abs(librosa.stft(y)), ref=np.max) img = librosa.display.specshow(D, y_axis='linear', x_axis='time',sr=sr, ax=ax[0])
こんな感じで、Python言語では
様々な形式のファイルを扱う事ができます
上記で世の中にある
ほとんどのファイル操作が行えると思いますので
ファイルを取り扱って自動化したい場合は
参考にしてみて下さい
それでは