讀寫csv檔案 可選擇部分列進行操作 按列來統計 並形成字典
用pandas讀取部分列,可以參考第一部分程式碼。
#!/usr/bin/env python # -*- coding: UTF-8 -*- ''' 此程式將原始資料中無關的列給去掉了,只保留時間、ID、等列,另外pandas還在第一列添加了索引列 ''' import pandas as pd from pandas import * import os import re #返回指定路徑下所有".csv"檔案的檔名列表 def eachFile(filepath): pathDir = os.listdir(filepath) #返回指定路徑下所有檔名的列表 dir_list = [] for allDir in pathDir: if re.search('.csv', allDir) != None: dir_list.append(allDir) return dir_list #讀取原始資料中需要的列,並存之於新檔案中 def modify(filename): path = u"G:\\研究\\SZ_AWS\\SZ_AWS\\" + filename file = open(path,errors = 'ignore') #usecols控制程式只讀部分列的資料 data = pd.read_csv(file, usecols=['DDATETIME', 'OBTID', 'WD3SMAXDF', 'WD3SMAXDD', 'WD10MAXDF', 'WD10MAXDD']) #pandas讀取csv時選擇第一行來標記一列 filename = u'G:\\研究\\AWS\\AWS\\mod\\modified_' + filename data.to_csv(filename) #pandas寫檔案時會在你的資料前加一列索引 print(filename + ' has been successfully created!') if __name__ == '__main__': filePath = u"G:\\研究\\SZ_AWS\\SZ_AWS\\" #檔案所在的路徑 dir_list = eachFile(filePath) #檔名列表 print(dir_list) for filename in dir_list: modify(filename)
第二部分程式碼是我想要統計站點記錄的資料總數,比如A站點資料多少個,B站點資料多少個,最後將所有少於一定數量的站點給刪除。這裡可以直接將pandas讀取出的series資料給轉換成熟悉的字典來進行後續處理:
#!/usr/bin/env python # -*- coding: UTF-8 -*- import csv import sys import os import re import pandas as pd import numpy as np #返回指定目錄下的所有.csv檔案 def eachFile(filepath): pathDir = os.listdir(filepath) #返回指定路徑下所有檔案和資料夾的名字,並存放於一個列表中 dir_list = [] for allDir in pathDir: if re.search('.csv', allDir) != None: #search()會掃描整個string查詢匹配,會掃描整個字串並返回第一個成功的匹配 dir_list.append(allDir) return dir_list #返回檔案中資料少於6132個的站點的列表 def less_70pct_ID(file): f = open(file) data = pd.read_csv(f, usecols = ['OBTID']) cnt = data['OBTID'].value_counts() #統計OBTID這一列,每個值出現的次數,返回的是一個series型別 cnt.to_dict() #將series型別轉換成字典型別 lst_of_less_70pct_ID = [] for ID in cnt.keys(): if cnt[ID] < 6132: #365*24*70%=6132,站點記錄的資料若是小於此值,則不合格 lst_of_less_70pct_ID.append(ID) print(ID,':',cnt[ID]) return lst_of_less_70pct_ID #將將列表去重後返回該列表 def rmv_rpt(lst): new_lst = [] for ID in lst: if ID not in new_lst: new_lst.append(ID) return new_lst def rmv_unwanted_ID(filename, unwanted_ID_lst): sav_filename = filename.replace('stage1', 'stage2') #repalce()方法是把字串中所有匹配到的都替換,並不是只替換第一個匹配到的子串 if os.path.exists(sav_filename): os.remove(sav_filename) #刪除檔案 with open(sav_filename, 'w', newline = '') as target_f: writer = csv.writer(target_f) with open(filename, 'r') as src_f: rows = csv.reader(src_f) #這樣讀csv檔案,遍歷時每一行是一個列表 to_save_line1 = 1 cnt = 0 for row in rows: cnt = cnt + 1 if to_save_line1 == 1: #第一行說明性內容儲存下來 writer.writerow(row) to_save_line1 = 0 continue elif row[1] not in unwanted_ID_lst: #ID不屬於unwanted_ID_lst則改行可保留 writer.writerow(row) print(sav_filename + 'has successfully created!') if __name__ == '__main__': #獲取目標檔案列表 filepath = u'G:\\深圳季風研究\\SZ_AWS\\SZ_AWS\\mod\\qualified_stage1_modified_data\\' dir_list = eachFile(filepath) #獲取資料中不滿足一致性的站點的列表 lst_of_less_70pct_ID = [] for file in dir_list: print(file) file = filepath + file print(file) year_lst_of_less_70pct_ID = less_70pct_ID(file) print(year_lst_of_less_70pct_ID) lst_of_less_70pct_ID = lst_of_less_70pct_ID + year_lst_of_less_70pct_ID lst_of_less_70pct_ID = rmv_rpt(lst_of_less_70pct_ID) print(lst_of_less_70pct_ID) for file in dir_list: file = filepath + file print(file) rmv_unwanted_ID(file, lst_of_less_70pct_ID)
相關推薦
讀寫csv檔案 可選擇部分列進行操作 按列來統計 並形成字典
用pandas讀取部分列,可以參考第一部分程式碼。 #!/usr/bin/env python # -*- coding: UTF-8 -*- ''' 此程式將原始資料中無關的列給去掉了,只保留時間、ID、等列,另外pandas還在第一列添加了索引列 ''' import
STL 使用ofstream + ifstream 讀寫csv檔案
csv檔案,每行的資料是用逗號分隔的,讀寫csv檔案的示例程式碼如下: #include "stdafx.h" #include <iostream> #include <string> #include <vector> #include <fst
python讀寫csv檔案方法總結
python提供了大量的庫,可以非常方便的進行各種操作,現在把python中實現讀寫csv檔案的方法使用程式的方式呈現出來。 1、使用csv讀寫csv檔案方法總結 reader()函式是一個閱讀器把閱讀的CSV檔案每一行以一個列表表示出來以至於你可以用for迴圈來遍歷他 讀檔案的時候,開啟檔
Python讀寫.csv檔案
# encoding: UTF-8 import csv # 讀取csv檔案 stocks_list = [] #方式一 # file = open(u'../Output.csv', u"r") # data = csv.reader(file) # 返回的是迭代型別 #方式二 with
支援各種特殊字元的 CSV 解析類 (.net 實現)(C#讀寫CSV檔案)
CSV是一種十分簡潔的資料結構,在DOTNET平臺實際使用中發現微軟官方並沒有提供預設的方法,而網上好多例子發現實現並不嚴謹甚至一些含有明顯錯誤,所以後面自己實現了一個讀寫工具類,這裡發出來希望方便後面朋友(難免還是會有考慮不到的地方,可隨時郵件聯絡) 使用該工具可對csv檔案進行讀寫(甚至不用去了解CSV的
python按鈕讀寫csv檔案
from Tkinter import * import cv2 import matplotlib.pyplot as plt import matplotlib.image as mpimg import os import shutil import csv file
(java筆記)java讀寫CSV檔案的方法
CSV檔案 逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其檔案以純文字形式儲存表格資料(數字和文字)。純文字意味著該檔案是一個字元序列,不含必須像二進位制數字那樣被解讀的資料。CSV檔案由任意數目的記錄組成,記
【C++】讀寫CSV檔案
新建CSV檔案:建txt——另存(UTF-8)——字尾.csv CSVparser.hpp #ifndef _CSVPARSER_HPP_ # define _CSVPARSER_HPP_ # include <stdexcept>
spark讀寫csv檔案
如果是spark1.6.0請新增maven: <dependency> <groupId>com.databricks</groupId> <artifactId>s
pySpark讀寫CSV檔案、查重並寫入CSV檔案中
前段時間在研究 pySpark 資料處理,深刻地感受到spark的極大魅力。自己是一個初學者,這篇部落格也只是簡單的完成了幾個簡單的工作任務,哈哈@@不說了上程式碼:from pyspark import SparkConf,SparkContext import csv
java讀寫CSV檔案的兩種方法
BufferedWriter writer =new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "GBK")) ;// 附加 上述程式碼片段作用: 轉碼 逗號分隔值(Com
python資料儲存系列教程——python(pandas)讀寫csv檔案
全棧工程師開發手冊 (作者:欒鵬) CSV檔案的規範 1、使用回車換行(兩個字元)作為行分隔符,最後一行資料可以沒有這兩個字元。 2、標題行是否需要,要雙方顯示約定 3、每行記錄的欄位數要相同,使用逗號分隔。逗號是預設使用的值
python 讀寫csv檔案
1. 將DataFrame資料寫入csv (1)用 csv包一行一行的寫入 import csv #python2可以用file替代open with open("test.csv","w") as csvfile: writer =
openCSV讀寫CSV檔案
openCSV是一款簡單的用於解析CSV檔案的java類庫,它封裝了CSV格式檔案的讀寫操作,可將檔案與java物件進行自動對映,自定義分隔符,使用轉義符等。 在使用時有幾點需要注意下: 1、 生成的csv檔案用EXCEL開啟時,
Python讀寫csv檔案的幾種方法 及 pandas.read_csv引數全解
''' Python讀寫csv檔案 逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為分隔字元也可以不是逗號), 其檔案以純文字形式儲存表格資料(數字和文字)。 純文字意味著該檔案是一個字元序列,不含必須像二進位制數字那樣被解讀的資
「Python」python讀寫csv檔案並增加行列
# -*- coding: utf-8 -*- """ Created on Thu Aug 17 11:28:17 2017 @author: Shawn Yuen """ import csv
使用 Python 讀寫 csv 檔案
非關係型資料庫中,以文件型的資料庫 MongoDB 最為著名。還有一個很好的全文檢索引擎 Elasticsearch,基本上也可以當做一個文件型的資料庫來使用。 建立 csv 檔案: import csv with open("./csv_tutot
Python3讀寫csv檔案
新手做機器學習,很多東西都得一點一點積累,第一步從讀寫csv資料檔案開始,檔案中包含列名。 1、讀入csv檔案 import csv with open("filename.csv","r",encoding="utf-8") as csvfile:
pandas學習之concat合併及讀寫CSV檔案
讀取CSV檔案 讀取中文的CSV檔案中有中文,用“UTF-8”會出現亂碼問題,解決: import pandas as pd import numpy as np data=pd.read_csv('C:/Users/elenawang/Desktop/
使用python讀寫CSV檔案的三種方法
Python讀寫csv檔案 覺得有用的話,歡迎一起討論相互學習~Follow Me 前言 逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為