python pandasでの頻出操作

少し使っていないとすぐに忘れてしまう・・

pandas

csvの読み込みや統合、抽出、xlsからxlsxに変換する等々で大変重宝するpandas・・なのですがなぜか操作を忘れやすい・・

メモ投稿です。

複数のcsvファイルを1ファイルにまとめる

import pandas as pd
import csv
import glob

csvfiles = sorted(glob.glob('**/*.csv'))

csv_list = []

for i in csvfiles:
    csv_list.append(pd.read_csv(i,encoding = 'shift-jis'))

df=pd.concat(csv_list)
df.to_csv('出力する名前', index = False , encoding="cp932")

globでフォルダ以下にあるcsvを取得
csvデータの入れ物をつくる
入れ物にどんどん入れていく
csvにする(記載ではインデックスなし)

CSVファイルに追記していく

ひとまとめにするのではなくて、例えばforでリストから読み込んで、随時追記していくパターン
インデックスはお好み、headerはFalseにすることが多そうです。

df.to_csv('ファイル名.csv')
for i in range(len(リスト)):
    df = df.drop_duplicates()
    df.to_csv('ファイル名' , mode='a' , header=False , index=False)

1行目で入れ物を作って、後段で追記していく
drop_duplicatesは重複の削除
「ファイルがなかったら作る」とか調整していくことになるかも

df.to_csvのmodeは初期だと上書き作成になる。

色々調べてると全ての検索はnote.nkmkさんへ繋がるのではないかと思ってくる

pandasでCSVファイルの書き込み・追記(to_csv) | note.nkmk.me
pandas.DataFrame, SeriesをCSVファイルとして書き込み(出力)するにはto_csv()メソッドを使う。既存のCSVファイルへの追記も可能。区切り文字を変更できるので、TSVファイル(タブ区切り)として保存することもで ...

重複しているデータを消す

df=df[~df.duplicated()]

条件に合ったrowだけ残す

df= df[df['インデックス名'] == 条件]

特手の値が含まれている行番号を探す

「headerにすべき行番号を探したい」と調べてました。
dfにする起点のvalueを指定して行番号・列番号を取れればいいなーと思っていたのですがどうも見当たらない・・query使ったら簡単にできるような投稿をたくさん見たんですが、うまくいかない。なぜだ!

ということで、間違いなくもっとキレイなやり方があるはずなのですけれど。動けばよかろうなのだ!の精神で。

df = pd.read_excel('拡張子までいれたexcelファイル名',header=None)
df =df[df[0] == "探したい単語"]
変数 = df.index[0]

・ヘッダーなしでdfにすることで、ヘッダーが0からの連番になる
・df[0]は、エクセルでいったらA列のところを指してます
・変数に何行目にあるかを戻します。

コメント

タイトルとURLをコピーしました