一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python讀寫數(shù)據(jù)讀寫csv文件(pandas用法)

python讀寫數(shù)據(jù)讀寫csv文件(pandas用法)

2021-08-13 00:50小朱小朱絕不服輸 Python

這篇文章主要介紹了python讀寫數(shù)據(jù)讀寫csv文件(pandas用法),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

python中數(shù)據(jù)處理是比較方便的,經(jīng)常用的就是讀寫文件,提取數(shù)據(jù)等,本博客主要介紹其中的一些用法。Pandas是一個(gè)強(qiáng)大的分析結(jié)構(gòu)化數(shù)據(jù)的工具集;它的使用基礎(chǔ)是Numpy(提供高性能的矩陣運(yùn)算);用于數(shù)據(jù)挖掘和數(shù)據(jù)分析,同時(shí)也提供數(shù)據(jù)清洗功能。

一、pandas讀取csv文件

數(shù)據(jù)處理過程中csv文件用的比較多。

  1. import pandas as pd
  2. data = pd.read_csv('F:/Zhu/test/test.csv')

下面看一下pd.read_csv常用的參數(shù):

pandas.read_csv(filepath_or_buffer, sep=', ', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=None, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, doublequote=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None)

常用參數(shù)解釋:read_csv與read_table常用的參數(shù)(更多參數(shù)查看官方手冊(cè)):

  1. filepath_or_buffer #需要讀取的文件及路徑
  2. sep / delimiter 列分隔符,普通文本文件,應(yīng)該都是使用結(jié)構(gòu)化的方式來組織,才能使用dataframe
  3. header 文件中是否需要讀取列名的一行,header=None(使用names自定義列名,否則默認(rèn)0,1,2,...),header=0(將首行設(shè)為列名)
  4. names 如果header=None,那么names必須制定!否則就沒有列的定義了。
  5. shkiprows= 10 # 跳過前十行
  6. nrows = 10 # 只去前10行
  7. usecols=[0,1,2,...] #需要讀取的列,可以是列的位置編號(hào),也可以是列的名稱
  8. parse_dates = ['col_name'] # 指定某行讀取為日期格式
  9. index_col = None /False /0,重新生成一列成為index值,0表示第一列,用作行索引的列編號(hào)或列名。可以是單個(gè)名稱/數(shù)字或由多個(gè)名稱/數(shù)宇組成的列表(層次化索引)
  10. error_bad_lines = False # 當(dāng)某行數(shù)據(jù)有問題時(shí),不報(bào)錯(cuò),直接跳過,處理臟數(shù)據(jù)時(shí)使用
  11. na_values = 'NULL' # 將NULL識(shí)別為空值
  12. encoding='utf-8' #指明讀取文件的編碼,默認(rèn)utf-8

讀取csv/txt/tsv文件,返回一個(gè)DataFrame類型的對(duì)象。

舉例:

python讀寫數(shù)據(jù)讀寫csv文件(pandas用法)

  1. import pandas as pd
  2. data = pd.read_csv('F:/Zhu/test/test.csv')
  3. print(data)
  4.  
  5. name age birth
  6. 0 zhu 20 2000.1.5
  7. 1 wang 20 2000.6.18
  8. 2 zhang 21 1999.11.11
  9. 3 zhu 22 1998.10.24

pandas用iloc,loc提取數(shù)據(jù)

提取行數(shù)據(jù):

loc函數(shù):通過行索引 “Index” 中的具體值來取行數(shù)據(jù)(如取"Index"為"A"的行)

iloc函數(shù):通過行號(hào)來取行數(shù)據(jù)(如取第2行的數(shù)據(jù))

  1. import pandas as pd
  2. import numpy as np
  3. #創(chuàng)建一個(gè)Dataframe
  4. data = pd.DataFrame(np.arange(16).reshape(4, 4), index=list('abcd'), columns=list('ABCD'))
  5. print(data)
  6.  
  7. A B C D
  8. a 0 1 2 3
  9. b 4 5 6 7
  10. c 8 9 10 11
  11. d 12 13 14 15

loc提取'a'的行:

  1. print(data.loc['a'])
  2.  
  3. A 0
  4. B 1
  5. C 2
  6. D 3
  7. Name: a, dtype: int32

iloc提取第2行:

  1. print(data.iloc[2])
  2.  
  3. A 8
  4. B 9
  5. C 10
  6. D 11
  7. Name: c, dtype: int32

提取列數(shù)據(jù)

  1. print(data.loc[:, ['A']])#取'A'列所有行,多取幾列格式為 data.loc[:,['A','B']]
  2.  
  3. A
  4. a 0
  5. b 4
  6. c 8
  7. d 12
  1. print(data.iloc[:, [0]])
  2.  
  3. A
  4. a 0
  5. b 4
  6. c 8
  7. d 12

提取指定行,指定列

  1. print(data.loc[['a','b'],['A','B']]) #提取index為'a','b',列名為'A','B'中的數(shù)據(jù)
  2.  
  3. A B
  4. a 0 1
  5. b 4 5
  1. print(data.iloc[[0,1],[0,1]]) #提取第0、1行,第0、1列中的數(shù)據(jù)
  2.  
  3. A B
  4. a 0 1
  5. b 4 5

提取所有行所有列:

  1. print(data.loc[:,:])#取A,B,C,D列的所有行
  2. print(data.iloc[:,:])
  3.  
  4. A B C D
  5. a 0 1 2 3
  6. b 4 5 6 7
  7. c 8 9 10 11
  8. d 12 13 14 15

根據(jù)某個(gè)指定數(shù)據(jù)提取行

  1. print(data.loc[data['A']==0])#提取data數(shù)據(jù)(篩選條件: A列中數(shù)字為0所在的行數(shù)據(jù))
  2.  
  3. A B C D
  4. a 0 1 2 3

二、pandas寫入csv文件

pandas將多組列表寫入csv

  1. import pandas as pd
  2.  
  3. #任意的多組列表
  4. a = [1,2,3]
  5. b = [4,5,6]
  6.  
  7. #字典中的key值即為csv中列名
  8. dataframe = pd.DataFrame({'a_name':a,'b_name':b})
  9.  
  10. #將DataFrame存儲(chǔ)為csv,index表示是否顯示行名,default=True
  11. dataframe.to_csv("test.csv",index=False,sep=',')

結(jié)果:

python讀寫數(shù)據(jù)讀寫csv文件(pandas用法)

如果你想寫入一行,就是你存儲(chǔ)的一個(gè)列表是一行數(shù)據(jù),你想把這一行數(shù)據(jù)寫入csv文件。

這個(gè)時(shí)候可以使用csv方法,一行一行的寫

  1. import csv
  2.  
  3. with open("test.csv","w") as csvfile:
  4. writer = csv.writer(csvfile)
  5.  
  6. #先寫入columns_name
  7. writer.writerow(["index","a_name","b_name"])
  8. #寫入一行用writerow
  9. #write.writerow([0,1,2])
  10. #寫入多行用writerows
  11. writer.writerows([[0,1,3],[1,2,3],[2,3,4]])

python讀寫數(shù)據(jù)讀寫csv文件(pandas用法)

可以看到,每次寫一行,就自動(dòng)空行,解決辦法就是在打開文件的時(shí)候加上參數(shù)newline=''

  1. import csv
  2.  
  3. with open("F:/zhu/test/test.csv","w", newline='') as csvfile:
  4. writer = csv.writer(csvfile)
  5.  
  6. #先寫入columns_name
  7. writer.writerow(["index","a_name","b_name"])
  8. #寫入多行用writerows
  9. writer.writerows([[0,1,3],[1,2,3],[2,3,4]])

python讀寫數(shù)據(jù)讀寫csv文件(pandas用法)

寫入txt文件類似

(1)創(chuàng)建txt數(shù)據(jù)文件,創(chuàng)建好文件記得要關(guān)閉文件,不然讀取不了文件內(nèi)容

(2)讀取txt文件

  1. #讀取txt文件
  2. file=open("G:\\info.txt",'r',encoding='utf-8')
  3. userlines=file.readlines()
  4. file.close()
  5. for line in userlines:
  6. username=line.split(',')[0] #讀取用戶名
  7. password=line.split(',')[1] #讀取密碼
  8. print(username,password)

三、pandas查看數(shù)據(jù)表信息

1)查看維度:data.shape

  1. import pandas as pd
  2. data = pd.read_csv('F:/Zhu/test/test.csv')
  3. print(data)
  4. print(data.shape)
  5.  
  6. index a_name b_name
  7. 0 0 1 3
  8. 1 1 2 3
  9. 2 2 3 4
  10. (3, 3)

2)查看數(shù)據(jù)表基本信息:data.info

  1. import pandas as pd
  2. data = pd.read_csv('F:/Zhu/test/test.csv')
  3. print(data)
  4. print(data.info)
  5.  
  6. index a_name b_name
  7. 0 0 1 3
  8. 1 1 2 3
  9. 2 2 3 4
  10. <bound method DataFrame.info of index a_name b_name
  11. 0 0 1 3
  12. 1 1 2 3
  13. 2 2 3 4>

3)查看每一行的格式:data.dtype

  1. import pandas as pd
  2. data = pd.read_csv('F:/Zhu/test/test.csv')
  3. print(data.dtypes)
  4.  
  5. index int64
  6. a_name int64
  7. b_name int64
  8. dtype: object

4)查看前2行數(shù)據(jù)、后2行數(shù)據(jù)

  1. df.head() #默認(rèn)前10行數(shù)據(jù),注意:可以在head函數(shù)中填寫參數(shù),自定義要查看的行數(shù)
  2. df.tail() #默認(rèn)后10 行數(shù)據(jù)
  1. import pandas as pd
  2. data = pd.read_csv('F:/Zhu/test/test.csv')
  3. print(data)
  4. print(data.head(2))
  5. print(data.tail(2))
  6.  
  7. index a_name b_name
  8. 0 0 1 3
  9. 1 1 2 3
  10. 2 2 3 4
  11. index a_name b_name
  12. 0 0 1 3
  13. 1 1 2 3
  14. index a_name b_name
  15. 1 1 2 3
  16. 2 2 3 4

四、數(shù)據(jù)清洗

1)NaN數(shù)值的處理:用數(shù)字0填充空值

  1. data.fillna(value=0,inplace=True)

注意:df.fillna不會(huì)立即生效,需要設(shè)置inplace=True

2)清除字符字段的字符空格

字符串(str)的頭和尾的空格,以及位于頭尾的\n \t之類給刪掉

  1. data['customername']=data['customername'].map(str.strip)#如清除customername中出現(xiàn)的空格

3)大小寫轉(zhuǎn)換

  1. data['customername']=data['customername'].str.lower()

4)刪除重復(fù)出現(xiàn)的值

  1. data.drop_duplicates(['customername'],inplace=True)

5)數(shù)據(jù)替換

  1. data['customername'].replace('111','qqq',inplace=True)

參考:

Python之pandas簡(jiǎn)介
Pandas中l(wèi)oc和iloc函數(shù)用法詳解(源碼+實(shí)例)

到此這篇關(guān)于python讀寫數(shù)據(jù)讀寫csv文件(pandas用法)的文章就介紹到這了,更多相關(guān)python讀寫csv內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/weixin_44052055/article/details/108491760

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲色图15p | 99热成人精品免费久久 | 狠狠燥 | 国产精品久久久久久吹潮 | 网址在线观看你懂我意思吧免费的 | 明星h文集合短篇小说 | 国自产精品手机在线视频 | 亚洲香蕉网久久综合影院3p | 果冻传媒林予曦图片 | 涩色爱 | 好姑娘在线观看完整版免费 | 秋霞综合网 | 四虎最新免费网址 | 99精品影视| 高清黄色直接看 | 精品日韩二区三区精品视频 | 欧美同志video 在线观看 | 成人免费播放 | 韩国理论三级在线观看视频 | 91动漫在线观看 | 女同全黄h全肉动漫 | 国产私人影院 | 天天中文 | 亚洲午夜久久久 | 久久久久九九 | 青青在线香蕉国产精品 | 国产老太婆hd老头 | 日日操日日| 日本激情在线 | 日韩网站在线 | 俄罗斯图书馆无打码久久 | 日韩成本大片35分钟免费播放 | 国产成人精品第一区二区 | 国产精品亚洲片夜色在线 | 色噜噜 男人的天堂在线观看 | 毛片在线播放a | 亚洲国产精品自在自线观看 | 91九色视频无限观看免费 | 成年性午夜免费视频网站不卡 | 成人观看免费观看视频 | 睡男神的这件小事小说在线阅读 |