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. 或 條件 不能使用 ordata[(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 然後是...