2024-08-26|閱讀時間 ‧ 約 9 分鐘

[Python]pandas基本操作,查看、新增、修改資料

本文主要介紹如何使用pandas來查看、新增、修改資料。

[Python ]pandas讀取寫入CSV 與Excel文件

[Python ]資料分析工具pandas基礎介紹

本文將使用kaggle平台上的數據資料來實作說明。


基本操作

查看資料

  • df.head():顯示前5行數據。
  • df.tail():顯示後5行數據。
  • df.info():顯示數據的完整資訊。
  • df.describe():統計描述數據。

選取資料

  • 單列選取:df['Name']
  • 多列選取:df[['Name', 'Age']]
  • 條件選取:df[df['Age'] > 25]

修改資料

新增列

df['NewColumn'] = [1, 2, 3, 4]

修改值

df.at[0, 'Name'] = 'Alicia'

刪除列

df.drop('NewColumn', axis=1, inplace=True)

程式範例

第一步先讀取資料,上Kaggle下載數據集,但先去創辦會員才可以下載喔。


讀取數據集並查看

df.info() :

提供了一個簡潔而全面的數據介面,讓你能夠快速了解數據集的結構和狀況,有多少筆資料,缺失值有多少,欄位有幾個,是什麼型別。

import pandas as pd
df = pd.read_csv('F:/python/crab/pandas/MentalHealthSurvey.csv')
df.info()

顯示行索引的範圍(如 RangeIndex: 0 to 86, 87 entries),表示 DataFrame 共有多少行。有多少筆數據。

  • <class 'pandas.core.frame.DataFrame'>: 表示這是一個 DataFrame。
  • RangeIndex: 87 entries, 0 to 86: 表示 DataFrame 有 87 行,行索引範圍從 0 到 86。
  • Data columns (total 21 columns):: 表示 DataFrame 有 3 列。
  • #: 列的順序編號。
  • Column: 列名。
  • Non-Null Count: 每列中非空(非 NaN)數值的數量。
  • Dtype: 每列的數據類型,object 表示字符串,int64 表示正整數。
  • dtypes: int64(10), object(11): 表示 DataFrame 中有 10 列是 int64類型,有 11 列是 object 類型。
  • memory usage: 14.4+ KB: 表示這個 DataFrame 佔用了大約 14.4+ K的內存


讀取統計資料

df.describe():

特別適合快速查看數據的整體概況,尤其是針對數值型欄位,但如果 DataFrame 中有非數值型的欄位,這些欄位不會被列入統計。

df.describe()
  • Count(計數):每個欄位中非缺失值(非 NaN)的數量。
  • Mean(平均值):每個欄位的平均值。
  • Std(標準差):標準差,用來衡量數據的分散程度。
  • Min(最小值):每個欄位的最小值。
  • 25%(第一四分位數):數據中的 25% 分位值。
  • 50%(中位數或第二四分位數):數據的中位數,也稱作 50% 分位值。
  • 75%(第三四分位數):數據中的 75% 分位值。
  • Max(最大值):每個欄位的最大值。

選取資料

選取單列資料顯示。

df['gender']

印出gender這列資料顯示



新增資料

df 中的行數必須與 new_data 的長度一致。如果 DataFrame 的行數與新欄位的資料數量不符,會引發錯誤。

new_data = list(range(1, 88))  # 生成從 187 的數字
df['NewColumn'] = new_data
df.info()

這樣就新增NewColumn這個欄位的資料了。

修改值

只更新單一索引位子的值

print(df['NewColumn'][0])
df.at[0, 'NewColumn'] = 2 # 修改單一值
df['NewColumn'][0]

整個更新

直接重新指定就能替換掉整行數據囉,但要注意長度要一致。

new_data = list(range(2, 89))  # 生成從 288的數字
df['NewColumn'] = new_data

部分資料進行更新

可以用切片的方式來進行部分資料更新。

df['ExistingColumn'][:3] = [87,87,87]
df['NewColumn'].head() #印出前5



刪除列

df.drop('NewColumn', axis=1, inplace=True)

  • 'NewColumn': 這是你想要刪除的欄位名稱。
  • axis=1: axis 參數指定了要刪除的是欄位(column)還是列(row)。axis=1 表示操作的是欄位;如果是 axis=0,則表示操作的是列。
  • inplace=True: 表示直接在原 DataFrame 上進行修改,而不會返回新 DataFrame。如果設為 False(預設值),會返回一個刪除指定欄位後的新 DataFrame,而原 DataFrame 保持不變。

範例

df.drop('NewColumn', axis=1, inplace=True)
df.info()




分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.