...

【Python】CSVファイルを行ごとに読み込み、列を追加する方法

PythonのCSVファイルの読み込み方

どうもおはようポテト(@ohayoupoteto22)です。

PythonでCSVファイルを取り扱う際に色々手こずったので、備忘録も兼ねて「CSVファイルを行ごとに読み込み、列を追加する方法」をまとめようと思います

ブログ主

早速いってみよう!

CSVファイルをどうしたいのか

アーマードゴリラ93
育ちすぎたポチ44
ムカデ長老73
モスキート娘58
深海王85
ホームレス帝60
ガロウ99
エビル天然水60

 

このようなCSVファイルがあったとして「列を追加して2列目の値に応じて3列目の値を変えたい」というわけです。

例えば「80以上なら”竜”、60以上なら”虎”を3列目に追加したい」ってな感じです(›´ω`‹ )

なんか聞いたことある名前ばっかりなんだけど…

ソロモン

 

環境

Python 3.7.7

PythonでCSVファイルを行ごとに読み込む方法

とりあえずコード全体というか結論から。

import tkinter as tk
import tkinter.filedialog as fd
import pandas as pd

file2='sample3.csv'
df = pd.read_csv(file2, encoding = 'shift-jis',header=None, names=['怪人', '戦闘力'])
#見出しを用意
df['災害レベル']=""#事前に列を用意

for i, row in df.iterrows():
  if row[1]>=90:
    df['災害レベル'][i] = "神"#3列目に災害レベルを入れる
  elif row[1]>=80:
    df['災害レベル'][i] = "竜"
  elif row[1]>=70:
    df['災害レベル'][i] = "鬼"
  elif row[1]>=60:
    df['災害レベル'][i] = "虎"
  else:
    df['災害レベル'][i] = "狼"

root =tk.Tk()
root.withdraw()

file=fd.asksaveasfilename(
initialfile="disaster_level",
defaultextension=".csv",
title="保存場所を選んでね",
filetypes=[("TEXT",".csv")]
)
with open(file,"w",encoding = 'shift-jis') as f:
  df.to_csv(f, index=False)#書き出す
  print("保存完了です")

以上のように書いたところ…

 

ダイアログボックスが表示され,,,

 

指定した場所に保存され…

 

 

無事、3列目にそれぞれの災害レベルが追加されてました(っ´ω`c)

やったー!しゃんなろー!

ソロモン

ブログ主

(どこで覚えたねんその言葉…)

細かく見てみると

使うライブラリ

import tkinter as tk
import tkinter.filedialog as fd
import pandas as pd

tkinterはダイアログボックスを表示・操作するためのライブラリ。

pandasは今回CSVファイルをいじいじするために必要なライブラリです。

ブログ主

pandasは以下のコマンドでインストールできます
$pip install pandas

 

CSVファイルを読み込んで見出しを用意

file_csv='sample3.csv'
df = pd.read_csv(file_csv, encoding = 'shift-jis',header=None, names=['怪人', '戦闘力'])
#見出しを用意
df['災害レベル']=""#事前に列を用意

pandasライブラリのread_csvメソッドでCSVファイルを読み込んでいます。

そして列を追加する際に何かと不便なので「names=」のところで見出しの名前を指定して見出しを設定。

そして列が無いと値も入れられないので事前に列を用意しておきます

行ごとに列に値を入れてく

for i, row in df.iterrows():
  if row[1]>=90:
    df['災害レベル'][i] ="神"#3列目に災害レベルを入れる
  elif row[1]>=80:
    df['災害レベル'][i] ="竜"
  elif row[1]>=70:
    df['災害レベル'][i] ="鬼"
  elif row[1]>=60:
    df['災害レベル'][i] ="虎"
  else:
    df['災害レベル'][i] ="狼"

itterrowsメソッドを使い、一行ごとにファイルを読み込んでいきます。パワー(2列目)はrow[1]に相当するので、各行そこの値から判断。

そして「df[‘災害レベル’][i]=〇」として値を入れています

ダイアログボックスを使い保存する

root =tk.Tk()
root.withdraw()

file=fd.asksaveasfilename(
initialfile="disaster_level",
defaultextension=".csv",
title="保存場所を選んでね",
filetypes=[("TEXT",".csv")]
)
with open(file,"w",encoding = 'shift-jis') as f:
  df.to_csv(f, index=False)#書き出す
  print("保存完了です")
上記のコードでダイアログボックスを表示して保存させています。to_csvメソッドでcsvファイルを書き出しているわけですね。
これでターミナルに”保存完了”と出力されれば終了です!
お疲れ様!

ソロモン

最後に:pandas便利だね

以上となります

他にも色々方法があると思いますが、色々調べてみたところpandasを使うのが一番楽そうだったので今回使ってみました。

Python初心者の自分でもある程度は使える代物なので、良心的ですね。

ブログ主

ということで疲れたので寝ます

参考になれば幸いです!では⸝⸝- ̫ -⸝⸝

参考になったらシェアしよう

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA