1. 程式人生 > >pandas21 讀csv檔案read_csv(5.文字資料讀寫例項)(詳細 tcy)

pandas21 讀csv檔案read_csv(5.文字資料讀寫例項)(詳細 tcy)

例項 2018/12/27

目錄:
第1部分:csv文字檔案讀寫

    pandas 讀csv檔案read_csv(1.文字讀寫概要)https://mp.csdn.net/postedit/85289371
    pandas 讀csv檔案read_csv(2.read_csv引數介紹)https://mp.csdn.net/postedit/85289928
    pandas 讀csv檔案read_csv(3.dtypes指定列資料型別)https://mp.csdn.net/postedit/85290575
    pandas 讀csv檔案read_csv(4.to_csv文字資料寫)https://mp.csdn.net/postedit/85290962
    pandas 讀csv檔案read_csv(5.文字資料讀寫例項)https://mp.csdn.net/postedit/85291123
    pandas 讀csv檔案read_csv(6.命名和使用列)https://mp.csdn.net/postedit/85291430
    pandas 讀csv檔案read_csv(7.索引)https://mp.csdn.net/postedit/85291658
    pandas 讀csv檔案read_csv(8.方言和分隔符)https://mp.csdn.net/postedit/85291994
    pandas 讀csv檔案read_csv(9.浮點轉換和NA值)https://mp.csdn.net/postedit/85292391
    pandas 讀csv檔案read_csv(10.註釋和空行)https://mp.csdn.net/postedit/85292609
    pandas 讀csv檔案read_csv(11.日期時間處理) https://mp.csdn.net/postedit/85292925
    pandas 讀csv檔案read_csv(12.迭代和塊)https://mp.csdn.net/postedit/85293639
    pandas 讀csv檔案read_csv(13.read_fwf讀固定寬度資料)https://mp.csdn.net/postedit/85294010
    
第2部分:
    pandas hdf檔案讀寫簡要https://mp.csdn.net/postedit/85294299
    pandas excel讀寫簡要https://mp.csdn.net/postedit/85294545
    
第3部分:
    python中csv模組用法tcy https://mp.csdn.net/postedit/85228189
    pandas讀csv檔案read_csv錯誤解決辦法7種https://mp.csdn.net/postedit/85228808
    pandas to_string用法https://mp.csdn.net/postedit/85294935


 

# 例項1:檔案讀 

pd.read_csv(r'file.csv')                    #讀檔案資料;有標題
pd.read_table(r'file.csv',sep=',')          #讀檔案資料;有標題
pd.read_csv('file.csv',header=None)         #讀檔案資料;無標題
pd.read_csv('file.csv',names=['No','Name']) #讀檔案資料;無標題;設定列名
pd.read_csv('file.csv',names=['No','Name'],
index_col='No') #將No列放到索引的位置上  
# 例項2:檔案寫

df.to_csv(r'file.csv',index=False)               #資料寫入不含索引,含列名,預設逗號分隔
df.to_csv(r'file.csv',index=False,columns=False) #資料寫入不含索引,不含列名,預設逗號分隔
df2.to_csv(r'file.csv')                          #資料寫入含索引,含列名,預設逗號分隔  
# 例項3:正則表示式\s+

data=' No Name Weight\n' \
     '0 1001 Tom 20\n' \
     '1 1002 Bob 30\n' \
     '2 -1003 Jim 40\n'
pd.read_csv(StringIO(data), sep=r'\s+')#正則表示式\s+分割不定的空白字元
pd.read_table(r'file_data3.csv',sep=r'\s+')

     No Name Weight
0  1001 Tom  20
1  1002 Bob  30
2 -1003 Jim  40  
# 例項4:處理“壞”行,異形檔案 

# 某些檔案欄位太少將在尾隨欄位中填充NA值
# 欄位太多的行預設會引發錯誤

data = 'a,b,c\n1,2,3\n4,5,6,7\n8,9,10'
pd.read_csv(StringIO(data))                       #報錯第3行欄位太多
pd.read_csv(StringIO(data), error_bad_lines=False)#跳過壞線:第3行

  a b c
0 1 2 3
1 8 9 10

#用usecols消除某些行中出現的無關資料列:
pd.read_csv(StringIO(data), usecols=[0, 1, 2])   #選擇1,2,3列

  a b c
0 1 2 3
1 4 5 6
2 8 9 10

# 用skiprows跳過檔案的第一行、第三行:
df4=pd.DataFrame([['#file_data4 writed by tcy shanghai 2018/12/23'],
                  ['No,Name,Weight'],['#skiprows跳過檔案的某一行'],
                  ['1001,Tom,20'],['1002,Bob,30'],['1003,Jim,40']])
df4.to_csv(r'file_data4.csv',header=None,index=False)

# 檔案內容如下:
""" 
#file_data4 writed by tcy shanghai 2018/12/23
"No,Name,Weight"
#skiprows跳過檔案的某一行
"1001,Tom,20"
"1002,Bob,30"
"1003,Jim,40
"""
pd.read_csv(r'file_data4.csv',sep=',|\"',skiprows=[0,2],engine='python').dropna(axis=1)

    No Name Weight
0 1001 Tom 20
1 1002 Bob 30
2 1003 Jim 40  
# 例項5:指定解析器引擎 

pandas用C解析器engine='c',如不支回退到Python
1)目前C不支援選項包括:
# sep 除單個字元(如正則表示式分隔符)
# skipfooter
# sep=None 同 delim_whitespace=False
2)應指定engine='python',否則會報警 
# 例項6:讀取遠端檔案

# 您可以將URL傳遞給CSV檔案:
df = pd.read_csv('https://download.bls.gov/pub/time.series/cu/cu.item',sep='\t')

# 還會處理S3 URL:
df = pd.read_csv('s3://pandas-test/tips.csv')