トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

PRG-PY-pandas

pandas インストール

pip3 install pandas

ODS ファイルの読み込み用(tips-Py-ods)

pip3 install odfpy

CSV の読み込み

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import pandas as pd 

df_names = pd.read_csv('lds9d1.csv', names=('xa','ya','za', 'xg','yg','zg', 'xm', 'ym', 'zm','ROLL','PITCH','YAW', 'degX','degY','DUM'))

print(df_names)
# 漢字コードのエラーが出る場合には
# df_name = pd.read_csv('lds9d1.csv',engine="python",encoding = "shift-jis")
## engine="python",encoding = "shift-jis"
## を追加してみる

Excel ファイルの読み込み

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import pandas as pd

# df_names = pd.read_csv('corona-kanjajokyou.csv',names=('n0','n1','n2','n3'))
df = pd.read_excel('corona-kanjajokyou.xlsx')

print('dataframeの行数・列数の確認==>\n', df.shape)
print('indexの確認==>\n', df.index)
print('columnの確認==>\n', df.columns)
print('dataframeの各列のデータ型を確認==>\n', df.dtypes)

print(df)

index の指定

import pandas as pd
### df_names = pd.read_csv('lds9d1.csv', names=('xa','ya','za', 'xg','yg','zg', 'xm', 'ym', 'zm','ROLL','PITCH','YAW', 'degX','degY','DUM'))
df1 = pd.read_csv('./D/30.csv',index_col=0)
df2 = pd.read_csv('./D/31.csv',index_col=0)

# df1.columns = ['host', 'count', 'byte']
# df2.columns = ['host', 'count', 'byte']

特定の index 行を削除

df = pd.read_csv('./20210510.csv',index_col=0)
# index が ltime の行を(全て)削除
print ( df.drop('ltime', axis=0) )
## dp = df.drop('ltime', axis=0) 

astype(int) のエラー

# df1['byte']=df1['response_bytes_clf'].astype(int)
df1['byte']=pd.to_numeric(df1['response_bytes_clf'],errors='coerce')

文字列変換

df['browser_version'].str.split('.').str[0:2].str.join('.')

print する、行や列を増やす

pd.set_option('display.max_columns', 100)
pd.set_option('display.max_rows', 500)

List を DataFrame に変換

## rows :: Python List
## ss   :: pd.DataFrame
### To pd.DataFrame
ss = pd.Series(rows)

https://note.nkmk.me/python-pandas-list/

CVSで読んだ 日時(文字列) を DateTime に

pd.to_datetime(df['A']

pd.to_datetime(df['B'], format='%Y年%m月%d日 %H時%M分')

df['X'] = pd.to_datetime(df['A'])

小数点付き時刻の変換

## df.dtime=pd.to_datetime(df.dtime,format='%Y/%m/%dT%H:%M:%S.%f')
df["TIME"]=pd.to_datetime(df["Time"],format='%M:%S.%f')

Tips

https://qiita.com/ysdyt/items/9ccca82fc5b504e7913a

https://qiita.com/koara-local/items/0e56bc1e58b11e4d7a32

Pandas でグラフ

サンプル通帳のコンバージョン

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
CSV 集計

Created on $Date: 2022/03/13 22:44:26 $
$Revision: 1.6 $

@author: green
"""
import numpy as np
import pandas as pd

print(pd.__version__)
# CSV の読み込み
ddf = pd.read_csv("./CSV/R3ban.csv", encoding='utf-8', dtype=object)

dfR = ddf[[u"取扱日付",u"お支払金額",u"お預り金額"]] 
print(dfR)

dfR['Date'] = pd.to_datetime(dfR[u'取扱日付'], format=u'%Y年%m月%d日',errors='coerce')

dfR['Pay'] = dfR["お支払金額"].str.strip('\\')  ## 円記号の削除
dfR['Pay'] = dfR["Pay"].replace(',','', regex=True)  ## カンマの削除
dfR['Pay'] = pd.to_numeric(dfR["Pay"],errors="coerce")

dfR['Dep'] = dfR["お預り金額"].str.strip('\\')
dfR['Dep'] = dfR["Dep"].replace(',','', regex=True)
# dfR['Dep'] = deR["Dep"].astype(int)
dfR['Dep'] = pd.to_numeric(dfR["Dep"],errors="coerce")

print(dfR.head() )

dfR.to_csv("./CSV/0000.csv")