<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          python讀寫csv文件的正確方式

          共 1836字,需瀏覽 4分鐘

           ·

          2021-08-12 13:02

          1. 讀取csv文件

          準(zhǔn)備數(shù)據(jù)data.csv

          name,age
          小明,14
          小剛,15

          通常,我們用下面的代碼讀取csv

          import csv

          with open(r'C:\Users\zhangdongsheng\Desktop\data.csv', encoding='utf-8')as f:
          reader = csv.reader(f)
          headers = next(reader)
          print(headers)
          for row in reader:
          print(row)

          程序輸出結(jié)果

          ['name', 'age']
          ['小明', '14']
          ['小剛', '15']

          我們完全可以像讀取txt文件那樣去讀取csv文件,但那樣讀取到的數(shù)據(jù)一行就是一個字符串,還需你自己進(jìn)行一次split操作才能將數(shù)據(jù)分隔開,因此我建議你使用csv模塊讀取csv文件。

          上面的讀取方法,有一個讓人感到難受的地方,每一行數(shù)據(jù)雖然都是以列表的形式返回,可如果你想獲取一行中的某一列數(shù)據(jù),就只能通過列表的索引,這樣并不方便。

          針對這個需求,可以使用namedtuple

          import csv
          from collections import namedtuple

          with open(r'C:\Users\zhangdongsheng\Desktop\data.csv', encoding='utf-8')as f:
          reader = csv.reader(f)
          headers = next(reader)
          Row = namedtuple('Row', headers)
          for row in reader:
          row = Row(*row)
          print(row.name, row.age)

          這樣可以非常方便的獲取一行數(shù)據(jù)中的某一列數(shù)據(jù)。

          2. 寫csv文件

          2.1 普通方法寫csv文件

          用csv模塊寫csv文件,主要用到writerow和writerows這兩個方法,前者是寫入一行,后者是寫入多行。

          import csv

          headers = ['name', 'age']
          row_1 = ['小明', '14']
          row_2 = ['小剛', '15']

          with open("data.csv", "w", encoding='utf-8', newline='') as csvfile:
          writer = csv.writer(csvfile)
          writer.writerow(headers)
          writer.writerows([row_1, row_2])

          在打開文件時,一定要設(shè)置encoding='utf-8' 否則中文無法正常顯示,另外要設(shè)置newline='',否則就會在兩行數(shù)據(jù)之間間隔一個空行。

          csv文件是文本文件,因此你完全可以拋開csv模塊,單純的用寫文本文件的方法來寫csv文件

          headers = ['name', 'age']
          row_1 = ['小明', '14']
          row_2 = ['小剛', '15']

          with open("data.csv", "w", encoding='utf-8') as csvfile:
          csvfile.write(','.join(headers) + "\n")
          csvfile.write(','.join(row_1) + "\n")
          csvfile.write(','.join(row_2))

          2.2 用pandas寫csv文件

          使用pandas寫csv文件需要先創(chuàng)建dataframe對象

          import pandas as pd

          headers = ['name', 'age']
          row_1 = ['小明', '14']
          row_2 = ['小剛', '15']

          df = pd.DataFrame([row_1, row_2], columns=headers)
          df.to_csv("data.csv", index=False, sep=',')

          效果與csv模塊寫文件是一樣的


          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  视频偷拍网址大全 | 人妻无码精品蜜桃HD | 美女靠比网站 | 欧美一级久久 | 日本黄电影在线看 |