最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你搞懂Python如何解析CSV文件

 更新時間:2026年03月31日 09:33:15   作者:mabley  
CSV(Comma-Separated?Values)是一種以純文本格式存儲表格數(shù)據(jù)的文件格式,本文主要為大家詳細(xì)介紹了如何使用Python解析CSV文件,有需要的小伙伴可以了解下

一、CSV文件

逗號分隔值(Comma-Separated Values,CSV)是一種以純文本格式存儲表格數(shù)據(jù)的文件格式。每一行代表一條數(shù)據(jù)記錄,每條記錄由一個或多個字段組成。字段分隔符默認(rèn)使用逗號分隔,實際使用中也可以采用其他字符作為分隔符,如分號 ;或制表符 \t等。

1. 基本結(jié)構(gòu)

  • 每一行:表示一條數(shù)據(jù)記錄。
  • 字段:記錄中的每個數(shù)據(jù)項,用字段分隔符分隔。
  • 字段值:文本或數(shù)字,可以包含特殊字符。

姓名,年齡,城市
張三,30,北京
李四,25,上海

2. 特殊情況

字段中若包含回車換行符、雙引號或者逗號,該字段需要用雙引號括起來。如果用雙引號括字段,那么出現(xiàn)在字段內(nèi)的雙引號前必須加一個雙引號進行轉(zhuǎn)義。

"aaa","b 
bb","ccc" 
"aaa","b""bb","ccc"

二、Python解析

1. 數(shù)據(jù)文件(data.csv)

id,name,age,city
1,Alice,30,New York
2,Bob,25,Los Angeles
3,Charlie,35,Chicago
4,David,40,Houston

2. 原生python

導(dǎo)入csv包之后對文件進行解析。

import csv

# 1. 讀取 CSV 文件
with open('data.csv', mode='r', newline='', encoding='utf-8') as file:
    reader = csv.reader(file)
    data = list(reader)

# 2. 取行/列數(shù)據(jù)
# 取第二行數(shù)據(jù)
print("\n第二行數(shù)據(jù):", data[1])

# 取第三列數(shù)據(jù)
column_index = 2
column_data = [row[column_index] for row in data]
print("\n第三列數(shù)據(jù):", column_data)

# 3. 遍歷數(shù)據(jù)
print("\n遍歷數(shù)據(jù):")
for row in data:
    print(row)

# 4. 批量修改某行/列數(shù)據(jù)
# 批量修改第二行數(shù)據(jù)
new_row_data = ['5', 'Eva', '28', 'San Francisco']
data[1] = new_row_data

# 批量修改第三列數(shù)據(jù)
new_column_data = ['31', '26', '36', '41']
for i, row in enumerate(data[1:], start=1):  # Skip header row
    row[column_index] = new_column_data[i - 1]

# 5. 修改某個具體的值
# 修改第一行第二列的具體值
data[0][1] = 'Alicia'

# 6. 增加某行/列數(shù)據(jù)
# 增加新行
new_row = ['5', 'Eva', '28', 'San Francisco']
data.append(new_row)

# 增加新列
new_column_data = ['USA'] * len(data)  # New column data
for row, value in zip(data, new_column_data):
    row.append(value)

# 7. 刪除某行/列數(shù)據(jù)
# 刪除第二行
del data[1]

# 刪除第三列
for row in data:
    del row[2]

# 8. 存儲數(shù)據(jù)
# 保存修改后的數(shù)據(jù)
with open(file_path, mode='w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerows(data)

print("\n修改后的數(shù)據(jù):")
for row in data:
    print(row)

3. pandas

導(dǎo)入pandas包之后對文件進行解析。

import pandas as pd
# 1. 讀取 CSV 文件
df = pd.read_csv('data.csv')

# 2. 取行/列數(shù)據(jù)
# 取第一行數(shù)據(jù)
print("\n第一行數(shù)據(jù):")
print(df.iloc[0])

# 取 'name' 列的數(shù)據(jù)
print("\n'name' 列的數(shù)據(jù):")
print(df['name'])

# 3. 遍歷數(shù)據(jù)
print("\n遍歷數(shù)據(jù):")
for index, row in df.iterrows():
    print(f"ID: {row['id']}, Name: {row['name']}, Age: {row['age']}, City: {row['city']}")

# 4. 批量修改某行/列數(shù)據(jù)
# 修改 'age' 列中所有人的年齡,加5歲
df['age'] = df['age'] + 5

# 修改 'city' 列中 'New York' 的值為 'NYC'
df.loc[df['city'] == 'New York', 'city'] = 'NYC'

# 5. 修改某個具體的值
# 修改 ID 為 2 的人的 'age' 為 28
df.loc[df['id'] == 2, 'age'] = 28

# 刪除 'city' 列
df = df.drop(columns=['city'])

# 6. 增加行/列,并填充數(shù)據(jù)
# 增加一列 'email' 并填充默認(rèn)值 'unknown'
df['email'] = 'unknown'

# 增加一行數(shù)據(jù)
new_row = {'id': 5, 'name': 'Eve', 'age': 22, 'email': 'eve@example.com'}
df.loc[len(df)] = new_row

# 7. 刪除某行/列數(shù)據(jù)
# 刪除 ID 為 4 的行
df = df[df['id'] != 4]

# 刪除 'city' 列
df = df.drop(columns=['city'])

# 8. 存儲數(shù)據(jù)
df.to_csv('modified_data.csv', index=False)

print("\n修改后的數(shù)據(jù):")
print(df)

to_csv函數(shù)詳解:

DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None,
                columns=None, header=True, index=True, index_label=None, mode='w',
                encoding=None, compression=None, quoting=None, quotechar='"',
                line_terminator='\n', chunksize=None, tupleize_cols=None, 
                date_format=None, doublequote=True,escapechar=None, decimal='.')

重要參數(shù):

  • columns : 列名
  • sep : 字段分隔符,默認(rèn)為 ,
  • index : 是否保存索引,默認(rèn)為 True
  • header : 是否保存列名,默認(rèn)為 True
  • na_rep : 替換空數(shù)據(jù)的字符串,默認(rèn)為 ‘’
  • float_format : 設(shè)置浮點數(shù)的格式(保留位數(shù))
  • path_or_buf : 文件路徑,如果沒有指定則將會直接返回字符串的 json

為了快速上手,對于CSV文件數(shù)據(jù)取出來之后的數(shù)據(jù)操作從各個方面給了簡單的demo。以取列值和行值為例(特別是pandas),根據(jù)數(shù)據(jù)情況有很多種方式,其中不乏簡單便捷的,可以找具體的教程進行學(xué)習(xí)。

到此這篇關(guān)于一文帶你搞懂Python如何解析CSV文件的文章就介紹到這了,更多相關(guān)Python解析CSV文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

齐齐哈尔市| 海盐县| 吴江市| 白玉县| 隆化县| 新宁县| 平陆县| 古田县| 察隅县| 奉贤区| 信阳市| 江孜县| 潮安县| 元阳县| 临清市| 瓮安县| 虎林市| 泰来县| 突泉县| 依安县| 恭城| 巴林右旗| 黎平县| 仁化县| 绩溪县| 泗水县| 阳城县| 拉孜县| 鄂州市| 邵阳市| 微博| 望都县| 呼图壁县| 鄂托克前旗| 桂平市| 普陀区| 祥云县| 平遥县| 临安市| 泾阳县| 饶平县|