Python中Pandas庫常用函數用法記錄一

作者20251个月前 (03-05)python29

Pandas是Python中用於數據分析和操作的強大庫。它提供了豐富的函數來處理和分析數據。作為不是專業的程序員在日常工作中用來處理一些excel文檔,將一部分的效率提高了不少, 後來又結合streamlit庫,發現更可以提升速度,因為不需要每次重複啟動python環境,或者jupyterLAB,只要上傳要處理的文檔就可以了,不過本文將先介紹Pandas中幾個常用的函數,後續也會介紹和分享自己使用streamlit的列子。 


  1. 1. read_csv()

  2. read_csv() 函數用於從CSV文件中讀取數據並創建一個DataFrame對象

  3. pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None, dtype=None, skiprows=None, nrows=None, ...)
  4. 參數:

  5. filepath_or_buffer: 文件路徑或對象。

  6. sep: 分隔符,默認為逗號。

  7. header: 指定作為列名的行,默認為'infer'。

  8. names: 列名列表,用於替換原有列名。

  9. index_col: 用作行索引的列編號或名稱。

  10. usecols: 返回一個數據子集要求的列名稱或編號。

  11. dtype: 指定各列的數據類型。

  12. skiprows: 需要忽略的行數(從文件開始算起)或需要跳過的行號列表(從0開始)。

  13. nrows: 需要讀取的行數(從文件開始算起)。

  14. 示例:

  15. import pandas as pd
    
    df = pd.read_csv('data.csv')
    print(df.head())

    2.to_csv()

  16. to_csv() 函數用於將DataFrame對象寫入CSV文件。

  17. DataFrame.to_csv(path_or_buf=None, sep=',', columns=None, index=True, header=True, mode='w', encoding=None, ...)
  18. 參數:

  19. path_or_buf: 文件路徑或對象,如果為None則輸出到字符串。

  20. sep: 字段分隔符,默認為逗號。

  21. columns: 要寫入的列名列表。

  22. index: 是否寫行(索引)名稱。默認為True。

  23. header: 是否寫列(字段名稱)名稱。默認為True。

  24. mode: 字符串,指定文件打開模式('w' 或 'a')。

  25. encoding: 字符串,指定字符編碼格式。

  26. 示例:

  27. df.to_csv('output.csv', index=False)

    3.merge()

  28. merge() 函數用於根據一個或多個鍵將兩個DataFrame對象進行合並。

  29. pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, ...)
  30. 參數:

  31. leftright: 要合並的DataFrame對象。

  32. how: 合並類型('left', 'right', 'outer', 'inner')。

  33. on: 要加入的列名。名稱必須在左右DataFrame對象中都存在。

  34. left_onright_on: 左、右DataFrame對象中的列或索引級別名稱用作鍵。

  35. left_indexright_index: 如果為True,則使用左、右DataFrame對象的索引(行標籤)作為其合並鍵。

  36. suffixes: 用於追加到重疊列名末尾的字符串元組。默認為('_x', '_y')。

  37. 示例:

  38. left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                         'A': ['A0', 'A1', 'A2', 'A3']})
    
    right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                          'B': ['B0', 'B1', 'B2', 'B3']})
    
    result = pd.merge(left, right, on='key')
    print(result)

    3.groupby()

  39. groupby() 函數用於將數據進行分組並對每個組應用聚合函數。

  40. DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, ...)
  41. 參數:

  42. by: 用於分組的列名或索引名的列表或數組。

  43. axis: 分組的軸,默認為0(沿行的方向)。

  44. level: 如果軸是MultiIndex(層次化索引),則根據級別名稱或編號進行分組。

  45. as_index: 默認為True,表示將分組鍵作為結果DataFrame的索引。設置為False可以將分組鍵作為普通列。

  46. sort: 是否對分組鍵進行排序。默認為True。

  47. 示例:

  48. df = pd.DataFrame({
        'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
        'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
        'C': np.random.randn(8),
        'D': np.random.randn(8)
    })
    
    grouped = df.groupby(['A', 'B']).sum()
    print(grouped)

    5.apply()

  49. apply() 函數用於將一個函數應用於DataFrame的行或列。

  50. DataFrame.apply(func, axis='columns', raw=False, result_type='expand', args=(), **kwds)
  51. 參數:

  52. func: 要應用的函數。

  53. axis: 應用的軸:0或'index'用於按行應用,1或'columns'用於按列應用。

  54. raw: 是否將行或列作為Series(默認)或ndarray對象傳遞給函數。

  55. result_type: {'expand', 'reduce', 'broadcast'}, 默認為'expand'。這對控制apply的輸出形狀很重要。

  56. args**kwds: 傳遞給函數的其他位置參數和關鍵字參數。

  57. 示例:

  58. def sum_func(x):
        return x.sum()
    
    result = df.apply(sum_func, axis=1)
    print(result)


6.pivot_table()

   透视表是一种可以对数据动态排布并且分类汇总的表格格式。或许大多数人都在Excel使用过数据透视表,也体会到它的强大功能,而在pandas中它被称作pivot_table。

pivot_table(data, values=None, index=None, columns=None,aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
  1. 參數:

    index:层次字段,要通过透视表获取什么信息就按照相应的顺序设置字段

    values:对需要的计算数据进行筛选

  2. columns:设置列层次字段,它不是一个必要参数,作为一种分割数据的可选方式

  3. aggfunc:可以设置我们对数据聚合时进行的函数操作

  4. #fill_value填充空值,margins=True进行汇总


未完待續。。。。。。