① python怎麼將數據存到csv文件
有兩種途徑:
1、csv文件本質上也是文件文件,可以按照文件文件來進行讀寫操作
2、python自帶csv模塊,可以import csv 來通過csv.write模塊來寫文件
② python 如何將數據寫入某個csv文件的特定位置
#其實csv文件就是用逗號隔開的文本文件,
#所以只要用python中的open函數打開就可以了。
#我把修改後的文件存為b_out.csv了
b_int={}
foriinopen('b.csv').readlines()[1:]:
j=i.split(',')
iflen(j)>2:
b_int[j[0]]=j[4]
a_int=open('a.csv').readlines()
foriinrange(1,len(a_int)):
a_int_=a_int[i].rstrip().split(',')
a_int_[-1]=b_int.get(a_int_[4],'0')
a_int[i]=','.join(a_int_)+' '
open('b_out.csv','w').write(''.join(a_int))
③ 求Python大神指導,一個csv文件,把其中每一列的數據提取出來單獨保存為一個csv文件
csv是Comma-Separated Values的縮寫,是用文本文件形式儲存的表格數據,比如如下的表格:
就可以存儲為csv文件,文件內容是:
No.,Name,Age,Score
1,mayi,18,99
2,jack,21,89
3,tom,25,95
4,rain,19,80
假設上述csv文件保存為"test.csv"
1.讀文件
如何用Python像操作Excel一樣提取其中的一列,即一個欄位,利用Python自帶的csv模塊,有兩種方法可以實現:
第一種方法使用reader函數,接收一個可迭代的對象(比如csv文件),能返回一個生成器,就可以從其中解析出csv的內容:比如下面的代碼可以讀取csv的全部內容,以行為單位:
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#讀
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.reader(f)
rows = [row for row in reader]
print(rows)
得到:
[['No.', 'Name', 'Age', 'Score'],
['1', 'mayi', '18', '99'],
['2', 'jack', '21', '89'],
['3', 'tom', '25', '95'],
['4', 'rain', '19', '80']]
要提取其中某一列,可以用下面的代碼:
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#讀取第二列的內容
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.reader(f)
column = [row[1] for row in reader]
print(column)
得到:
['Name', 'mayi', 'jack', 'tom', 'rain']
注意從csv讀出的都是str類型。這種方法要事先知道列的序號,比如Name在第2列,而不能根據'Name'這個標題查詢。這時可以採用第二種方法:
第二種方法是使用DictReader,和reader函數類似,接收一個可迭代的對象,能返回一個生成器,但是返回的每一個單元格都放在一個字典的值內,而這個字典的鍵則是這個單元格的標題(即列頭)。用下面的代碼可以看到DictReader的結構:
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#讀
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.DictReader(f)
column = [row for row in reader]
print(column)
得到:
[{'No.': '1', 'Age': '18', 'Score': '99', 'Name': 'mayi'},
{'No.': '2', 'Age': '21', 'Score': '89', 'Name': 'jack'},
{'No.': '3', 'Age': '25', 'Score': '95', 'Name': 'tom'},
{'No.': '4', 'Age': '19', 'Score': '80', 'Name': 'rain'}]
如果我們想用DictReader讀取csv的某一列,就可以用列的標題查詢:
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#讀取Name列的內容
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.DictReader(f)
column = [row['Name'] for row in reader]
print(column)
得到:
['mayi', 'jack', 'tom', 'rain']
2.寫文件
讀文件時,我們把csv文件讀入列表中,寫文件時會把列表中的元素寫入到csv文件中。
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#寫:追加
row = ['5', 'hanmeimei', '23', '81']
out = open("test.csv", "a", newline = "")
csv_writer = csv.writer(out, dialect = "excel")
csv_writer.writerow(row)
得到:
④ 利用Python如何將數據寫到CSV文件中
如果你的數據是列表格式,可以使用一個迭代器,將數據寫入文件,同時添加必要的分隔符以構成csv文件
如果數據是字典格式,需要考慮使用換行符或者其他特殊符號來分割每個字典元素(包括鍵和值)。鍵和值可以考慮使用和之前不重復的分隔符進行分割。
這樣就構成了一個csv文件(csv使用分隔符分割值的文件)
操作方法如下:
1,使用讀寫追加的方式打開csv文件。
2,找到csv文件的結尾。
3,在結尾使用和之前csv使用的分割相同的格式進行數據添加。
4,關閉文件
⑤ python怎麼寫入csv文件
import pandas as pd#任意的多組列表a = [1,2,3]
b = [4,5,6]
#字典中的key值即為csv中列名dataframe = pd.DataFrame({'a_name':a,'b_name':b})#將DataFrame存儲為csv,index表示是否顯示行名,default=Truedataframe.to_csv("test.csv",index=False,sep='')1234567891011
a_name b_name0 1 41 2 52 3 61234
同樣pandas也提供簡單的讀csv方法
import pandas as pddata = pd.read_csv('test.csv')12
會得到一個DataFrame類型的data,不熟悉處理方法可以參考pandas十分鍾入門
另一種方法用csv包,一行一行寫入
import csv
#python2可以用file替代open
with open("test.csv","w") as csvfile:
writer = csv.writer(csvfile)
#先寫入columns_name
writer.writerow(["index","a_name","b_name"])
#寫入多行用writerows
writer.writerows([[0,1,3],[1,2,3],[2,3,4]])12345678910
index a_name b_name0 1 31 2 32 3 41234
讀取csv文件用reader
import csvwith open("test.csv","r") as csvfile:
reader = csv.reader(csvfile) #這里不需要readlines
for line in reader:
print line
⑥ python3存儲數據到csv
我的思路是用pandas處理:
import pandas as pd
希望可以幫到你。
⑦ python怎麼樣把學生信息管理系統的信息保存到csv中
import csv
# 1. 創建文件對象
filename = 'D:/AAA.csv'
f = open(filename,'w',encoding='utf-8',newline="")
# 2. 構建 csv寫入對象
csv_writer = csv.writer(f)
# 3. 寫入文件頭
csv_writer.writerow(["姓名","年齡","性別"])
# 4. 寫入csv文件內容
csv_writer.writerow(["張三",'15','男'])
csv_writer.writerow(["李四",'14','男'])
csv_writer.writerow(["王五",'15','女'])
# 5. 關閉文件
f.close()
print(f"File {filename} was created.")
⑧ python中用to_csv()儲存數據為什麼只能存儲到一條數據
這段循環邏輯有問題, 因為最後的2行代碼都在循環體裡面,這導致了每次to_csv只導出一條數據。最後程序運行完之後,csv文件里的最終結果只是最後一條數據而已。
而且這段程序過於繁雜了,有很多多餘的計算,當數據多的時候會有性能問題。可以用下面的方法, 要更簡潔。
#直接把profile(也就是result欄位里的內容)放進DataFrame參數裡面
#然後在把需要的欄位過濾一下,這樣就可以1行代碼解決你的問題了,當然下面的為了讓代碼更易讀,我分成了3行。
profile=responer.json()(['content']['positionTrsult']['result'])
profileColumns=['positionName','city','ecation','workYear']
f=pd.DataFrame(profile,columns=profileColumns)
#pandas在很多操作的時候,能得到我們想像中的結果,所以多試試,會有很多驚喜的~
然後看你是剛用pandas(我也是剛學習pandas),給你一個建議, 就是涉及到pandas的操作就【盡量】不要用循環,這對以後處理大量數據的時候會產生非常大的性能問題的。我用循環處理10W+的數據的時候等了十分鍾都沒有得出結果來。。。CPU是8700k,內存32G都不行...
⑨ Python怎麼把循環得到的結果按照列依次寫入到一個csv文件中
我改了一下你的代碼,實測是可以從 a.csv復制到 b.csv中
import csv
def foo():
with open('a.csv', 'r') as f:
reader = csv.DictReader(f)
rows = [row for row in reader]
if not rows:
return
with open('b.csv', mode='w', newline='', errors='ignore') as f2:
for index, row in enumerate(rows):
if index == 0:
f_csv = csv.DictWriter(f2, fieldnames=list(row.keys()))
f_csv.writeheader()
f_csv.writerow(row)
if __name__ == '__main__':
foo()
⑩ Python從指定行將數據寫入CSV文件
加個id或時間列進去,打開後排序下就好了