1. 程式人生 > >pandas21 讀csv檔案read_csv(6.命名和使用列)(詳細 tcy)

pandas21 讀csv檔案read_csv(6.命名和使用列)(詳細 tcy)

命名和使用列  2015/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.處理列名 
# 檔案可能有也可能沒有標題行。pandas假設第一行應該用作列名:

data = 'a,b,c\n1,2,3\n4,5,6\n7,8,9'

pd.read_csv(StringIO(data)) #列名為a,b,c
pd.read_csv(StringIO(data), names=['s1', 's2', 's3'], header=0)   #列名為s1,s2,s3,丟棄標題行
pd.read_csv(StringIO(data), names=['s1', 's2', 's3'], header=None)#列名為s1,s2,s3,資料中保留標題行

data = 'skip this skip it\na,b,c\n1,2,3\n4,5,6\n7,8,9'
pd.read_csv(StringIO(data), header=1)                             #列名為a,b,c;標題位於第2行,資料跳過第1行 
2.重複名稱解析 
# 如果檔案或標題包含重複的名稱,則pandas預設會區分它們以防止覆蓋資料:
data = 'a,b,a\n0,1,2\n3,4,5'
pd.read_csv(StringIO(data),mangle_dupe_cols=True)  #列名為a,b,a.1 # 標題包含重複的名稱
pd.read_csv(StringIO(data), mangle_dupe_cols=False)#出現重複資料丟擲ValueError 
3.過濾列usecols
# 該usecols引數允許您使用列名,位置號或可呼叫來選擇檔案中列的任何子集:
data = 'a,b,c,d\n1,2,3,foo\n4,5,6,bar\n7,8,9,baz'

pd.read_csv(StringIO(data))                    #4列資料,列名為a,b,c,d
pd.read_csv(StringIO(data), usecols=['b', 'd'])#2列資料,列名為b,d
pd.read_csv(StringIO(data), usecols=[0, 2, 3]) #2列資料,列名為a,c,d
pd.read_csv(StringIO(data), usecols=lambda x: x.upper() in ['A', 'C']) #2列資料,列名為a,c
pd.read_csv(StringIO(data), usecols=lambda x: x.upper() in ['A', 'c']) #1列資料,列名為a

# 指定在最終結果中不使用哪些列:
pd.read_csv(StringIO(data), usecols=lambda x: x not in ['a', 'c'])     #2列資料,列名為b,d
4.索引列和尾隨分隔符 
# 如果檔案的列資料多於列名數,則第一列將用作DataFrame行名:

data = 'a,b,c\n4,apple,bat,5.7\n8,orange,cow,10'
pd.read_csv(StringIO(data))                           #列名為a,b,c
data = 'index,a,b,c\n4,apple,bat,5.7\n8,orange,cow,10'
pd.read_csv(StringIO(data), index_col=0)              #列名為a,b,c;'index'為行名

# 資料行的末尾使用分隔符:禁用索引列推斷並丟棄最後一列用index_col=False
data = 'a,b,c\n' \
       '4,apple,bat,\n' \
       '8,orange,cow,'
pd.read_csv(StringIO(data))

      a    b   c
4 apple  bat NaN
8 orange cow NaN

pd.read_csv(StringIO(data), index_col=False)

  a     b    c
0 4 apple  bat
1 8 orange cow

# 用usecols選項解析資料子集,則 index_col規範基於該子集,而不是原始資料。
pd.read_csv(StringIO(data), usecols=['b', 'c'])

    b   c
4 bat NaN
8 cow NaN

pd.read_csv(StringIO(data), usecols=['b', 'c'], index_col=0)

    b   c
4 bat NaN
8 cow NaN