程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Pandas學習問題整理(持續更新)

編輯:Python

文章目錄

  • 寫在前面的話
  • 1、pandas讀取csv亂碼
  • 2、pandas對列的操作(增刪改,條件增刪改等)
    • 1、pandas給DataFrame新增一列數據(新加字段)
    • 2、pandas刪除DataFrame某一列數據
    • 3、pandas刪除DataFrame包含某一值的某一列數據
    • 4、pandas修改DataFrame某一列的全部數據
    • 5、pandas修改DataFrame某一列的滿足指定條件的數據
    • 6、pandas讀取csv文件跳過表頭(不讀第一行)
  • 3、pandas對行的操作(增刪改,條件增刪改等)
    • 1、刪除包含指定文本的行
    • 2、刪除重復行數據
  • 4、pandas新建空的DataFrame操作
  • 5、pandas獲取DataFrame的屬性操作
    • 1、獲取DataFrame行數
  • 6、pandas對DataFrame中日期屬性值的操作
    • 1、判斷位於指定日期范圍的數據及其個數
  • 7、pandas合並多個DataFrame(csv文件)
    • 1、使用merge函數
    • 2、使用concat函數
  • 8、pandas將txt與csv文件互相轉換
    • 1、txt轉換為csv文件
    • 2、csv轉換為txt文件
  • 9、pandas更改列名和更改字段的順序
  • 10、pandas提取滿足條件的某一行並寫入另一個csv文件
  • 總結


寫在前面的話

沒有專門的學習過pandas,都是在應用中逐漸學習的,本篇博客是記錄自己在使用pandas處理數據時候遇到的問題的筆記,以便以後查詢,免得再去搜。 這篇文章持續更新,目前空的內容是我遇到了的但還沒時間寫的,之後會補上,沒遇到的問題後續會完善,所以說並不是騙大家進來的。小伙伴們遇到什麼樣的相關問題,歡迎評論區留言,一起進步!

本文以下面的csv文件為例:

1、pandas讀取csv亂碼

''' 我用WPS保存的csv文件用pycharm後會顯示亂碼 '''
import pandas as pd
#亂碼的一般原因是csv以ANSI編碼形式編碼,一種解決辦法是將csv用記事本打開,另存為UTF-8即可
#第二種方法就是用pandas以ANSI打開,然後再以UTF-8保存即可,之後就可以正常查看了(注意再次讀取的時候編碼不要是ANSI了) 
df=pd.read_csv(filePath,encoding="ANSI")
df.to_csv(filePath, encoding="UTF-8",index=False)
#如果要讀取的文件比較多,則可以使用glob批量修改編碼格式
import glob
for file in glob.glob(FilePath): #這裡的FilePath形式:比如文件都在名為data的文件夾中,那麼FilePath就是"data\\*.csv",*.csv的意思就是任何名稱的csv文件
df=pd.read_csv(file,encoding="ANSI")
df.to_csv(file, encoding="UTF-8",index=False)#index=False的意思是不加索引號

例子:直接使用

df=pd.read_csv("StudentList.csv")

結果報錯:

以ANSI讀取:

2、pandas對列的操作(增刪改,條件增刪改等)

1、pandas給DataFrame新增一列數據(新加字段)

df=pd.read_csv(file,encoding="UTF-8")
#新增的數據我們用一個列表存儲,注意列表長度要與當前df的行數相等,不然報錯加不進去
nList=[1,2,3,4,5,6]#假設原df共6行,不算字段那一行
#新增字段名稱為"newField"
df["newField"]=nList
#保存
df.to_csv(file, encoding="UTF-8",index=False)

例子:新增一列“成績”:

2、pandas刪除DataFrame某一列數據

df=pd.read_csv(file,encoding="UTF-8")
#假設刪除名為"name"的列
del df["name"]
#保存
df.to_csv(file, encoding="UTF-8",index=False)

例子:刪除“ID”:

3、pandas刪除DataFrame包含某一值的某一列數據

4、pandas修改DataFrame某一列的全部數據

5、pandas修改DataFrame某一列的滿足指定條件的數據

6、pandas讀取csv文件跳過表頭(不讀第一行)

df = pd.read_csv(filePath,header=None)

3、pandas對行的操作(增刪改,條件增刪改等)

1、刪除包含指定文本的行

def dropText():
df = pd.read_csv(filePath)
#以FieldName為准,若其包含:yourText文本則刪除此行
df = df.drop(df[df["FieldName"].str.contains("yourtext")].index)
df.to_csv(filePath, index=False, encoding="UTF-8")

2、刪除重復行數據

def dropDuplicate():
df = pd.read_csv(filePath)
#以FieldName為准,刪除其重復數據,保留最後一行last
df.drop_duplicates('FieldName', keep='last', inplace=True)
df.to_csv(filePath, index=False, encoding="UTF-8")

4、pandas新建空的DataFrame操作

5、pandas獲取DataFrame的屬性操作

1、獲取DataFrame行數

 df = pd.read_csv(filePath, encoding="UTF-8")
print(len(df))

6、pandas對DataFrame中日期屬性值的操作

1、判斷位於指定日期范圍的數據及其個數

7、pandas合並多個DataFrame(csv文件)

1、使用merge函數

2、使用concat函數

#合並效果:相同字段名的列對應追加,在豎直方向上追加,得到的新文件包含所有csv文件的所有列名。若待合並的文件的字段名或個數不對應,則不具有相應字段的值為空
df1=pd.read_csv(FilePath_1)
df2 = pd.read_csv(FilePath_2)
df3 = pd.read_csv(FilePath_3)
df=pd.concat([df1,df2,df3]) #更多列表以此類推即可
df.to_csv(FilePath, encoding='utf-8', index=False)

8、pandas將txt與csv文件互相轉換

1、txt轉換為csv文件

df = pd.read_csv(TxtFilePath,delimiter="\t",header=None)#txt沒有字段名的前提下
df.columns = ['id','name','age'] #字段名列表,這裡我們給了3個字段名
df.to_csv(CsvFilePath, encoding='utf-8', index=False)

2、csv轉換為txt文件

9、pandas更改列名和更改字段的順序

10、pandas提取滿足條件的某一行並寫入另一個csv文件

總結

這篇文章持續更新,小伙伴們遇到什麼樣的相關問題,歡迎評論區留言,我們一起進步啊!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved