一維數據和二維數據


此文章為本人學習所得,如有不足之處,歡迎指正,分享原創,一起進步 

維度:數據的組織形式


一維數據

由對等關系的有序或無序數據構成,采用線性方式(一條直線排開)組織

對等關系:這些數據平級關系(不是包含、從屬關系)

一維數據的表示-----

如果數據間有序:使用列表類型。如:一維列表ls = [3.1 , 3.02 , 4.15]
如果數據間無序:使用集合類型,如:一維集合st ={ 4.15 , 3.02 , 3.1} 

切記:for循環可以遍歷數據,進而對每個數據進行處理

一維數據的存儲-----

方式:空格分隔、逗號分隔、特殊符號(如:$)

缺點:數據中不能出現分隔符

原因:用某符號作為數據的分隔符,那么數據本身就不能出現該符號,否則就無法判斷是分隔符還是一個標點符號,所以選擇根據數據的特點,去選擇哪種符號作為分隔符

一維數據的處理-----

(一)讀入:從以$為分隔符的文件中讀入數據。文件→解釋器(idle中)

1 fi=open(“abc.txt”)
2 txt = fi.read()        #得到一整串的str文本
3 ls=txt.split("$")    #文件的分隔符是什么,str.split()中的符號就是什么。得到以這些數據為str元素的列表。若每行有回車,則換行符屬於最后一個數據的一部分
4 fi.close()

Example1:(以一個$作為分隔符)

結果:

Example2:(以兩個$作為分隔符)

結果:

 (二)寫入:將以$為分隔符的數據寫入文件。解釋器(idle中)→文件

1 ls=['中國','美國','日本']        #這是將要寫入文件的數據,用列表形式組織(存放再idle中)
2 fi=open("123.txt","w")        #創建空文件並待寫(做好寫入的准備,但還沒開始寫入),如果已有該文件,則會先清空之前的內容,再處於待寫狀態
3 txt = "@".join(ls)    #打算用哪種分隔符,就用哪種。"".join的作用:將引號內的符號插進列表ls的元素之間,並去掉中括號和各元素外面的引號
4 fi.write(txt)
5 fi.close()

結果:

維數據

由多個一維數據構成,是一維數據的組合形式。也稱為表格數據,其中,表頭是二維數據的一部分,也可以不作為其中的一部分

維數據的表示-----

用二維列表表示

二維列表:本身是列表,里面的元素也是列表,即列表內還有列表。如下:

 里面的元素之間可以不換行,但必須要有分隔符。里面元素之間的排版隨意,但為了美觀,建議換行且對齊工整:

 二維數據的存儲-----

ls[row][column],先行后列,按行存

CSV數據存儲格式

(一)語法規則:

(1)CSV:Comma-Separated Values

(2)國際通用的一二維數據存儲格式,一般.csv擴展名

(3)每行一個一維數據,無空行。采用逗號分隔,逗號為英文半角逗號,逗號與數據之間無額外空格

(4)Excel和txt均可讀入輸出,一般編輯軟件都可以產生

(5)如果某個元素缺失,逗號仍要保留,二維數據的表頭可以作為數據存儲,也可以另行存儲。如下:

(二)具體實例:

假設有“country.csv”文件如下:

step1:先看看從文件讀入到 idle 中是什么情況:

1 fi = open("country.csv","r")
2 for c in fi:
3     print(c)

結果:

(三)實例結論:

(1)對比csv文件,讀入是按行讀入,且每行末尾隱含換行符,所以結果有空行(print語句不會打印出換行符\n),所以在按行遍歷時,要先去掉換行符。

(2)結果中的內容是逗號分隔,即遍歷csv的過程中,將隱形的分隔符遍歷了出來 

(3)讀取csv文件跟讀取txt所返回的類型都是str。實際上,不管是什么文件,也不管文件的內容是什么類型,將文件讀取到idle中,都是以str類型返回。如遍歷句柄、read()readline()等。如下: 

1 fi = open("country.csv","r")
2 for c in fi:
3     print(type(c))

 結果:

補充:

(一)刪除每行末尾的換行符有三種方法: 

(1)str.strip(“\n”):刪除首尾的”\n” 

(2)str.replace(“\n”,””):替換”\n”為空 

(3)str = str[0:-1]:切片去掉末尾,臨時性改變,必須賦值

(二)在idle中創建二維列表ls,並對里面的數據進行操作的方法:二層循環,逐一遍歷。如下: 

1 ls=[[],[],[],......,[]]    創建二維列表
2 for row in ls:
3     for column in row:
4         print(ls[row][column])

Notes:(無論一維還是二維)

(1)分隔符不能缺少:

 

(2)fi.close()不要缺少,否則寫入數據后,目標文件還是原樣,因為還沒結束釋放  

(3)讀入用到str.split(),寫入用到str.join()

(4)切記:

讀入:從文件讀入到idle中,最終要將結果轉為相應維度的列表形式。如文件是一維數據,則讀取的最終結果應是一維列表 [ ];文件是二維數據,則讀取的最終結果應是二維列表 [ [], [],......,[] ]

寫入:從idle寫入到文件中,最初要將數據變為列表形式。如想寫入一維數據,則要用一維列表來組織這些數據 [ ] ;想寫入二維數據,則用二維列表來組織這些數據 [ [],[],......,[] ],但最終要轉為str形式,這樣才能寫入文件(不接受以list形式寫入),否則:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM