(1)读取文件
df = pd.read_csv(r‘C:\Users\Administrator\Desktop\网约20年9月分时段订单数.csv‘) "内部存在不同编码编码方式" f = open(r‘G:\出租车分月\2020年\出租20年4月.csv‘,encoding=‘gbk‘, errors=‘ignore‘) df = pd.read_csv(f) "循环读取文件" path = r"G:\出租车分月\2019年" for filename in os.listdir(path): f = open(os.path.join(path,filename), encoding=‘gb18030‘, errors=‘ignore‘) df = pd.read_csv(f)
"读取txt文件"
df = pd.read_table(r‘D:\数据\罗师姐的数据\20180103.txt‘,sep = ‘,‘,encoding = ‘utf-8‘,header = None) #通过sep = ‘,‘设置分隔符 ,负责读取的数据只有一列
(2)处理时间数据
df[‘depTime‘] = pd.to_datetime(df.depTime,format = ‘%d/%m/%Y %H:%M:%S‘) #此时时间可以进行加减算法 "将时间转换为秒" df4[‘WorkTime‘] = (df3-df2).dt.total_seconds()
(3)处理数据常用方法
"对一列数据求和" df[‘driveMile‘].sum() #对一列数据的值进行求和 "选取某列的某几个字符" df2 = df[‘身份证号码‘].apply(lambda x:str(x)[6:10]) "提取某列不重复元素的个数" res = df[‘carNo‘].unique() #返回一个多维数组,ndarray类型 "统计某列每个元素出现的次数" ser = df[‘carNo‘].value_counts() #返回一个Series序列,索引为元素名称,可通过 .index获取索引 "统计dataframe数据的行数" res = df[‘carNo‘].shape[0] "转换某一列的数据类型" res = df[‘carNo‘].astype(‘int‘) "--------------对文件按照某一列进行分组-------------------" df1 = df.groupby(‘carNo‘) #返回一个group格式数据 "选取分组后的某一列" df1 = df.groupby(‘oederTime_x‘)[‘carNo‘] #返回一个SeriesGroupBy格式数据 "查看每组的列数" res = df.groupby(‘carNo‘).size() "查看每组某一列包含的不重复的数据" res = df.groupby(‘carNo‘)[‘destTime‘].unique() "分组后选取某一列进行求和" df.groupby(‘carNo‘)[‘factPrice‘].sum() "查看每组不重复元素的个数" #代码来自‘分日车辆数(优化)‘ df1 = df.groupby(‘oederTime_x‘)[‘carNo‘].unique() car_q = [] for i in range(0,len(df1)): car_q.append(len(df1[i])) print(car_q) "选取某组某列,对值进行求和并排序" #代码来自‘巡游车收入统计(优化)‘ df_f[‘mile‘] = df.groupby(‘oederTime_x‘)[‘driveMile‘].sum().sort_index(ascending = True) "根据某两列进行分组" res = df.groupby([‘carNo‘,‘depTime‘]) #以列表的形式传入,先根据第一个分组,再根据第二个分组
(4)文件含异常数据处理
"删除某一列中的空值所在行" df_q = df[‘depTime‘].dropna(axis = 0,how = ‘any‘) #axis = 1表示删除列 "将异常数据替换为NaN值" res = [] for item in df[‘factPrice‘].values: try: res.append(float(item)) except: res.append(np.nan) df[‘Price‘] = pd.DataFrame(data = res) "查看文件编码方式" def get_encoding(file): with open(file,‘rb‘) as f: return chardet.detect(f.read())[‘encoding‘] file_name= r"C:\Users\Administrator\Desktop\测试\ORDER_INFO11.csv" #此处替换为你自己的文件路径 encoding = get_encoding(file_name) print(encoding) "根据每一行的编码方式进行读取文件" # 获取文件编码类型 def get_encoding(file): # 二进制方式读取,获取字节数据,检测类型 with open(file, ‘rb‘) as f: return chardet.detect(f.read())[‘encoding‘] data_path=‘数据集/week1.csv‘ df = pd.DataFrame() encoding = get_encoding(data_path) # get_encoding函数在上文 f = open(data_path, encoding=encoding,errors=‘ignore‘) data = pd.read_csv(f) df = df.append(data)
(5)保存文件
df1.to_csv(r"C:\Users\chd\Desktop\出租19年1月.csv", index=False, header=0, mode=‘a‘) #index = False 表示不保存行索引,header = 0 表示不保存列索引 ,mode = ‘a‘ 表示为追加写入形式
原文:https://www.cnblogs.com/jgua/p/14369852.html