文件读取与保存技巧
一.循环读取同一个文件夹中的所有excel,并合并成一个dataframe
import os
import pandas as pd
path = r'你的文件路径'
files = os.listdir(path)
#读取所有execl文件并拼接成一个dataframe
def read_excel(path):
df = pd.DataFrame()
for file in os.listdir(path):
#若对文件名还有其他约束在此处添加,e.g. and file.startswith("升级")
if file.endswith(".xlsx") :
#拼接所有符合要求的excel文件
df = pd.concat([df, pd.read_excel(path + '\\' + file,header=None,usecols=[1])],axis=1,ignore_index=True)
return df
df_test = read_excel(path)
二.循环读取同一个文件夹中的所有csv,并合并成一个dataframe
def read_txt(path):
df = pd.DataFrame()
for file in os.listdir(path):
#若对文件名还有其他约束在此处添加,e.g. and file.startswith("升级")
if file.endswith(".csv"):
#拼接所有符合要求的csv文件
df = pd.concat([df, pd.read_csv(
path + '\\' + file)], axis=1, ignore_index=True)
return df
path='你的文件路径'
a=read_txt(path)
a
pandas运算
列名和索引相同的两个dataframe运算
列名和索引相同的两个dataframe,对应的值相减与相除。得到的dataframe再取大于值0.8的数的个数
#df_pred-df_Truth
a = (abs(df_pred.sub(df_Truth))).div(df_Truth)#(绝对值|df_pred-df_Truth|)/df_Truth
df_08=df[(abs(df_pred.sub(df_Truth))).div(df_Truth)>0.8].count()
df_08_df = pd.DataFrame(df_08,columns=['列名'])
df_08_df
pandas条件选择
panda根据多个条件选择每个列符合条件的值的数量
#df_Truth、df_pred_positive1、df_pred_negative1都是索引、列名相同的dataframe
#例如现在要找到df_Truth矩阵中,每一列中的每个值大于df_pred_positive1或者小于df_pred_negative1的数量
#!!!注意!!! 条件语句只能使用&和|,不能使用and和or
df = (df_Truth > df_pred_positive1) | (df_Truth < df_pred_negative1)
aaa=df_Truth[df].count()
# resultdf = pd.DataFrame()
# for num in range(sigma1df.shape[1]):
# countdf = pd.DataFrame(sigma1df.iloc[:,[num]].value_counts(),columns=[list(sigma1df.iloc[:,[num]].columns)])
# resultdf = pd.concat([resultdf,countdf],axis=1)
# resultdf
aaa=pd.DataFrame(aaa,columns=['列名'])