python批量處理dat文件及科學計算

python批量處理dat文件及科學計算

摘要:主要介紹一些python的文件讀取功能,文件內容修改,文件名後綴更改等操作。

批處理文件功能

import os
path1 = 'C:\\Users\\awake_ljw\\Documents\\python for data analysis\\test1'
path2 = 'C:\\Users\\awake_ljw\\Documents\\python for data analysis\\test2'
filelist = os.listdir(path1)

for files in filelist:
    Olddir = os.path.join(path1,files)
    filename = os.path.splitext(files)[0]
    filetype = os.path.splitext(files)[1]
    print Olddir
    file_test = open(Olddir,'r')
    Newdir = os.path.join(path2,str(filename)+'.csv')
    print Newdir
    file_test2 = open(Newdir,'w')
    for lines in file_test.readlines():
        strdata = ",".join(lines.split('\t'))
        file_test2.write(strdata)
    file_test.close()
    file_test2.close()

os模塊是python最基礎的模塊之一,一般用於文件處理等操作。上面這段代碼主要就是將dat文件轉化爲csv文件,同時保證csv可讀。一般txt文件不能通過直接改後綴改變呈csv文件格式,一般會造成文件不可讀。csv文件一般通過逗號分隔文本,數據處理起來較得心應手,可以直接改後綴得到xlsx文件,一般excel也可讀。

科學計算

matlab作爲一門科學計算編程語言,在科學計算的應用實在廣泛,包括webread等強大的函數用起來十分順手,但matlab是商業軟件,並不免費。其實,python在科學計算效率或函數庫功能包括其繪圖功能、圖像處理都很強大,(相比matlab,python的調色板更出色)。以下列舉一些數據文件讀取,繪圖的一些基本操作作爲參考。

數據提取及繪圖

#數據提取
import os 
import pandas as pd
import numpy as np
number = -1;
sudu=np.zeros(5247*5,dtype=float).reshape(5247,5)
for files in filelist1:
    number +=1
    data = pd.read_csv(str(number+1)+'a.csv')
    sudu[:,number]=data['velocity']
    x = data['x']
    y = data['y']
a = sudu[0:5184,0].reshape(81,64)
%matplotlib inline
import matplotlib.pyplot as plt
extent = [np.min(x),np.max(x),np.min(y),np.max(y)]
plt.subplot(231)
u0 = sudu[0:5184,0].reshape(81,64)
plt.imshow(u0,extent=extent,origin='lower')
plt.subplot(232)
u1 = sudu[0:5184,1].reshape(81,64)
plt.imshow(u1,extent=extent,origin='lower')
plt.subplot(233)
u2 = sudu[0:5184,2].reshape(81,64)
plt.imshow(u2,extent=extent,origin='lower')
plt.subplot(234)
u3 = sudu[0:5184,3].reshape(81,64)
plt.imshow(u3,extent=extent,origin='lower')
#plt.axis("equal")
plt.subplot(235)
u4 = sudu[0:5184,4].reshape(81,64)
plt.imshow(u4,extent=extent,origin='lower')
plt.subplot(236)
u5 = sudu[0:5184,4].reshape(81,64)
plt.imshow(u5,extent=extent,origin='lower')
#contour
cs = plt.contour(u5, 20,extent = extent)
plt.xlim(-0.8,0.8)
plt.ylim(0.6,2.2)
plt.axis('equal')

這裏寫圖片描述
這裏寫圖片描述

python的科學計算功能與matlab及其相似,python有幾點不同在於
1.python有元組的數據類型,元組不同於列表,元組不可更改
2.python的數據檢索使用[]
總而言之,python的數據形式及其豐富。
numpy以及pandas是python用於數據處理的兩個庫,具體使用方法主要推薦python科學計算這本書。matplotlib用於繪圖,剛也說了,其調色板很厲害哦,圖像質量不錯。

預告:代碼運行環境均爲jupyter notebook,簡直神器一般的存在,網上搭建的資料也太多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章