python筆記 csv檔案基本操作

2021-09-11 07:13:21 字數 4357 閱讀 1851

dataframe

pandas.dataframe的一些操作

去重複高階查詢:切片和匹配

計算在pandas中,以dataframe為基本單位。進行類似資料庫的操作。增 刪 改 查。

import csv

import pandas as pd

sfilename = './img_db.csv'

with open(sfilename)as file:

try :

data=pd.read_csv(file)

if(len(data[data['file_name']==file_name].values) != 0):

logi('exist:'+file_name)

return 1

except:

traceback.print_exc()

print('read error:')

將行寫入檔案

sfilename = './img_db.csv'

efile = open(sfilename,'a',newline='')

ewriter = csv.writer(efile)

ewriter.writerow([g_idx,path,file_name,'\"'+text+'\"',size])

df寫入檔案

df.to_csv(csv_path, index = false)# 儲存
###構造

class pandas.dataframe(data=none, index=none, columns=none, dtype=none, copy=false)

用dictionary建立

import pandas as pd

import numpy as np

d =

df = pd.dataframe(data=d, dtype=np.int8)

df

out:

col1	col2

0 11 13

用numpy ndarray建立
df2 = pd.dataframe(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['a', 'b', 'c'])
ldata=pd.read_csv(efile) #讀

data2 = pd.concat([pd.dataframe([0]) for i in range(ldata.shape[0])], ignore_index=true) #構造新的df

data3 = pd.concat([ldata, data2], axis = 1) #按列鏈結

data3.to_csv(data3_path, index= false)# 儲存

#查詢query(self, expr[, inplace]) query the columns of a dataframe with a boolean expression.

遍歷
iterrows() : 將dataframe迭代成(index ,series)

iteritems(): 將dataframe迭代成(列名,series)

itertuples(): 將dataframe迭代成元組

row[4] = 44444

刪除

df.drop([『b』, 『c』], axis=1) #刪除列

df.drop([1,2,3,4]) # 刪除行 idx為 1 2 3 4的行

df.drop(columns=[『b』, 『c』],index = [0:2]) #刪除列、行

修改

df.loc[5] = array([19., 23., 27.]) # 行賦值

df['d'] = array([19., 23., 27.]) # 列賦值

ldata.iat[row[0], 3]=4444 # 修改行列:0行3列

print(ldata.loc[row[0]][3])

#追加new_line_df行到df

查詢

查詢所有』file_name』欄位為file_name的所有元素

data[data['file_name']==file_name].values
其中.values返回list

最後一行

tail_data = data.tail(1)

tail_data.values[0][0] #第乙個欄位的值,tail_data.values[0]為字典型別

merge 兩個表

表不一樣,關係表合併

df2的資料 合併到df1中,df1的行數不變。

兩個表中的key '學校』一致,則合併。

with open('./output_art_plan1_temp.csv', 'r', encoding='utf-8')as file:

with open('./概率視覺化終版6.csv', 'r', encoding='utf-8')as top_file:

try :

df2 = pd.read_csv(file)

df1 = pd.read_csv(top_file)

out_df = df1.merge(df2, left_on='學校', right_on='學校')

out_df.to_csv('.\\概率視覺化終版7.csv', index= false)# 儲存

except exception as e:

print(str(e))

表一樣

去重複去掉重複的,保留其中第乙個。

df.drop_duplicates(subset=none,keep='first',inplace=false)
data = pd.dataframe() #例子
1. 按索引或tag提取

提取列

data['a']	#單列

data[['a', 'b']] #多列

使用 .loc或者 .iloc 提取

#第乙個引數是行,第二個引數為列--.loc為按標籤提取, .iloc為按位置索引提取

data.loc[:, 'a'] # 等價於data.iloc[:, 0]

data.loc[:, ['a', 'b']] # 等價於data.iloc[:, [0, 1]]

2. 按匹配條件

–這種方法是按照某些列符合某種條件,然後提取多行

這兩種方法得到的結果是一致的,推薦使用第二種

1. 與 條件 不能使用 and

data[(data['a']<=2) & (data['b']>=5)]

data.loc[(data['a']<=2) & (data['b']>=5)]

2. 或 條件 不能使用 or
data[(data['a']<=2) | (data['b']>=5)]

data.loc[(data['a']<=2) | (data['b']>=5)]

pandas.core.series.series過載了+ - * /運算

兩列運算

利用.values 返回list。 例如:c列 = a列 + b列

pd[『c』] = pd[『a』].values + pd[『b』].values

求和函式

原表0 a b c

0 1 2 3

1 4 5 6

2 7 8 9

2 10 18 19

df.sum() #逐列求和

a 12

b 15

c 18

df.sum(axis=1) #逐行求和

0 61 15

2 24

最大值函式

df.max() 每列列最大值

df.max(axis=1) 每行最大值

復合運算

(df.sum() - df.min() - df.max())/3 # 去掉最大值,最小值 求平均

python學習筆記 CSV檔案讀

python pandas io tools 之csv檔案讀寫 讀取csv檔案 pd.read csv 寫入csv檔案 pd.to csv import pandas as pd obj pd.read csv test.csv print objunnamed 0 c1 c2 c3 0 a 0 5...

Python學習筆記 csv檔案讀寫

本文中如有錯誤請指正。工作中總會遇到各種各樣的問題,雖然現在操作txt檔案較多,但是總少不了要讀寫csv,感覺總是把csv檔案轉成txt多少會有一些不便,因此打算學習一下讀寫csv的操作,並寫出來作為日後的複習筆記。所謂csv 逗號分隔值 格式是電子 和資料庫最常用的匯入和匯出格式。csv模組實現了...

python使用csv寫入csv檔案

沒什麼好說的,直接上 吧 with open file.csv w encoding utf 8 newline as csvfile writer csv.writer csvfile 首先是表頭 writer.writerow id name gender birthday rating 然後是...