資料分析4csv檔案的處理

2021-09-11 21:55:28 字數 3443 閱讀 4357

1.讀寫csv檔案

f1 = open(r'd:\hhh.csv', 'r')

f2 = open(r'd:\111.csv','w')

ttt = f1.readline() //讀入第一行標題行 將其作為字串並賦給名為header的變數

ttt = ttt.strip() //使用strip函式去掉字串兩端的空格,製表符和換行符

ttt = ttt.split(',') //使用split函式將字串用逗號拆分成列表

print(ttt)

for row in f1:

row = row.strip()

row_list = row.split(',')

print(row_list)

f2.write(','.join(map(str,row_list))+'\n') //map函式將str函式應用於header_list中的每個元素

//確保每個元素都是字串。join函式在header_list中的每個值之間插入乙個逗號,將列表轉換為乙個字串

f1.close()

f2.close()

2.篩選行

①行中的值滿足某個條件

基礎python寫法:

import csv

f1 = open('url1', 'r')

f2 = open('url2', 'w')

file_input = csv.reader(f1)

file_output = csv.writer(f2)

header = next(file_input) //使用csv模組的next函式讀出輸入檔案的第一行 ,

賦給名為header的列表變數

file_output .writerow(header) //將標題行寫入輸出檔案

for row_list in file_input:

supplier = str(row_list[0]).strip() //取出每行**商名字,賦給名為supplier的變數

cost = str(row_list[3]).strip('$').replace(',', '') //取出每行資料的成本,賦給名為cost的變數

if supplier == 'supplier z' or float(cost)>600.0: //檢驗每行中的這兩個資料是否滿足條件

file_output.writerow(row_list) //將滿足條件的行寫入輸出檔案

f1.close()

f2.close()

pandas寫法:

data_frame = pd.read_csv(f1)

data_frame['cost'] = data_frame['cost'].str.strip('$').astype(float)

data_frame_meet_condition = data_frame.loc[(data_frame['supplier name'].str.contains('z')) | (data_frame['cost']>600.0),:]

//loc函式可以同時選擇特定的行與列。在逗號前面設定行篩選條件,逗號後面設定列篩選條件。

data_frame_meet_condition.to_csv(f2,index=false)

②行中的值屬於某個集合

基礎python寫法:

import csv

f1 = open('url1', 'r')

f2 = open('url2', 'w')

file_input = csv.reader(f1)

file_output = csv.writer(f2)

dates = ['1/20/14', '1/21/14'] //建立乙個列表變數,其中包含兩個特定日期

header = next('file_input')

file_output.writerow(header)

for row_list in file_input:

date = row_list[4] //取出每行的日期

if date in dates: //檢驗日期是否屬於特定日期

file_output.writerow(row_list) //將滿足條件的行寫入輸出檔案

f1.close()

f2.close()

pandas寫法:

data_frame = pd.read_csv(f1)

data_frame_value_in_set = data_frame.loc[data_frame['purchase date'].isin(dates),:]

//使用簡潔的isin函式

data_frame_value_in_set.to_csv(f2,index=false)

③行中的值匹配於某個模式/正規表示式

基礎python寫法:

import csv

import re

f1 = open('url1', 'r')

f2 = open('url2', 'w')

file_input = csv.reader(f1)

file_output = csv.writer(f2)

pattern = re.complie(r'(?p^001-.*)',re.i)

//使用re模組的compile函式建立乙個名為pattern的正規表示式變數

header = next(file_input)

file_output.writerow(header)

for row_list in file_input:

number = row_list[1] //取出每行編號

if pattern.search(number): //驗證標號是否滿足正規表示式

file_output.writerow(row_list)

f1.close()

f2.close()

pandas寫法:

data_frame = pd.read_csv(f1)

data_frame_value_matches_pattern = data_frame.loc[data_frame['invoice number'].str.startswith("001-"),:]

//使用startswith函式來搜取資料

data_frame_value_matches_pattern.to_csv(f2,index=false)

Python資料分析基礎之CSV檔案 4

有些時候,我們也並不需要檔案中所有的列。有兩種方法可以在csv檔案中選取特定的列 1.使用列索引值 2.使用列標題。1.基礎python usr bin env python3 import csv import sys input file sys.ar 1 output file sys.ar ...

python 資料分析基礎一 csv檔案處理(2)

前文已經說過如何去通過基礎python處理csv檔案的行,一系列的問題 本篇博文重點為利用pandas模組去較為簡單地處理這些複雜的問題 python pandas模組 import pandas as pd input file supplier data.csv out file the fir...

資料分析(4)

資料質量分析 主要針對缺失值 異常值 不一致的值 重複資料以及含有特殊符號 異常值的查明箱型圖統計 利用箱型圖對資料異常值進行查明 import os path os.path.abspath 當前所處資料夾的絕對路徑 import pandas as pd catering sale data c...