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

一文總結pandas基礎及常用方法、函數

編輯:Python

pandas 是基於NumPy 的一種工具,該工具是為解決數據分析任務而創建的。Pandas 納入了大量庫和一些標准的數據模型,提供了高效地操作大型數據集所需的工具。pandas提供了大量能使我們快速便捷地處理數據的函數和方法。你很快就會發現,它是使Python成為強大而高效的數據分析環境的重要因素之一。

1、pandas怎樣讀取數據

數據類型說明讀取方法csv 、tsv、txt用逗號分隔,tab分隔的純文本文件pd.read_csvexcel微軟xls或者xlsx文件pd.read_excelmysql關系型數據庫表pd.read_sql

例:

import pandas as pd
df=pd.read_csv("./DataIncome.csv")
print(df.head()) #head方法是預覽數據前五條

2、pandas數據結構

2.1 DataFrame 二維數據(理解為表)

2.2 Series(一維數據,理解為python中的列表)

3、怎樣查詢數據

3.1、df.loc

根據行、列標簽值查詢

例:選擇所有行的name列

print(df.loc[:, "name"])

3.2、df.iloc

對數據進行位置索引,從而在數據表中提取出相應的數據。

df.iloc[a,b]

a是行索引,b是列索引

import pandas
df = pandas.read_csv('a.csv')
print(df.iloc[1,2])

輸出:95

4、新增數據列

4.1 直接賦值

import pandas
df = pandas.read_csv('a.csv')
df['test']=0 #新增列名

4.2 insert()函數

insert()函數語法:

df.insert(loc, column, value,allow_duplicates = False)

參數說明:

  • loc 必要字段,int類型數據,表示插入新列的列位置,原來在該位置的列將向右移。
  • column 必要字段,插入新列的列名。
  • value 必要字段,新列插入的值。如果僅提供一個值,將為所有行設置相同的值。可以是int,string,float等,甚至可以是series /值列表。
  • allow_duplicates 布爾值,用於檢查是否存在具有相同名稱的列。默認為False,不允許與已有的列名重復。

5、統計函數

函數含義min()計算最小值max()計算最大值sum()求和mean()計算平均值count()計數(統計非缺失元素的個數)size()計數(統計所有元素的個數)median()計算中位數var()計算方差std()計算標准差quantile()計算任意分位數cov()計算協方差corr()計算相關系數skew()計算偏度kurt()計算峰度mode()計算眾數describe()描述性統計(一次性返回多個統計結果)groupby()分組aggregate()聚合運算(可以自定義統計函數)argmin()尋找最小值所在位置argmax()尋找最大值所在位置any()等價於邏輯“或”all()等價於邏輯“與”value_counts()頻次統計cumsum()運算累計和cumprod()運算累計積pct­­_change()運算比率(後一個元素與前一個元素的比率)

6、判斷空值(數據清洗)

6.1 判斷pandas中單個空值對象的方式:

  • 利用pd.isnull(),pd.isna()
  • 利用np.isnan()
  • 利用is表達式
  • 利用in表達式

6.2 判斷pandas中多個空值對象的方式:

  • 可以用Series對象和DataFrame對象的any()或all()方法;
  • 可以用numpy的any()或all()方法;
  • 不可以直接用python的內置函數any()和all()方法;
  • 可以用Series或DataFrame對象的dropna()方法剔除空值;
  • 可以用Series或DataFrame對象的fillna()方法填充空值

6.3數據清洗常用函數

函數含義duplicated()判斷序列元素是否重復drop_duplicates()刪除重復值hasnans()判斷序列是否存在缺失(返回TRUE或FALSE)isnull()判斷序列元素是否為缺失(返回與序列長度一樣的bool值)notnull()判斷序列元素是否不為缺失(返回與序列長度一樣的bool值)dropna()刪除缺失值fillna()缺失值填充ffill()前向後填充缺失值(使用缺失值的前一個元素填充)bfill()後向填充缺失值(使用缺失值的後一個元素填充)dtypes()檢查數據類型astype()類型強制轉換pd.to_datetime轉日期時間型factorize()因子化轉換sample()抽樣where()基於條件判斷的值替換replace()按值替換(不可使用正則)str.replace()按值替換(可使用正則)str.split.str()字符分隔

6.4數據篩選函數

函數含義isin()成員關系判斷between()區間判斷loc()條件判斷(可使用在數據框中)iloc()索引判斷(可使用在數據框中)compress()條件判斷nlargest()搜尋最大的n個元素nsmallest()搜尋最小的n個元素str.findall()子串查詢(可使用正則)

7、數據排序

7.1DataFrame排序

函數:DataFrame.sort_values(by, ascending=True, inplace=False)
參數說明:

  • by:字符串或者List<字符串>,單列排序或者多列排序。
  • ascending:bool或者List,默認為True,如果為list,則會對多個列進行排序。
  • inplace:是否修改原始DataFrame。
    例如:df.sort_values(by="name")

7.2Series排序:

函數:Series.sort_values(ascending=True, inplace=False)
參數說明:

  • ascending:默認為True升序排序,為False降序排序。
  • inplace:是否修改原始Series。

例如:df["name"].sort_values(ascending=True)

8、時間序列函數

函數含義dt.date()抽取出日期值dt.time()抽取出時間(時分秒)dt.year()抽取出年dt.mouth()抽取出月dt.day()抽取出日dt.hour()抽取出時dt.minute()抽取出分鐘dt.second()抽取出秒dt.quarter()抽取出季度dt.weekday()抽取出星期幾(返回數值型)dt.weekday_name()抽取出星期幾(返回字符型)dt.week()抽取出年中的第幾周dt.dayofyear()抽取出年中的第幾天dt.daysinmonth()抽取出月對應的最大天數dt.is_month_start()判斷日期是否為當月的第一天dt.is_month_end()判斷日期是否為當月的最後一天dt.is_quarter_start()判斷日期是否為當季度的第一天dt.is_quarter_end()判斷日期是否為當季度的最後一天dt.is_year_start()判斷日期是否為當年的第一天dt.is_year_end()判斷日期是否為當年的最後一天dt.is_leap_year()判斷日期是否為閏年

9、繪圖函數

函數含義hist()繪制直方圖plot()可基於kind參數繪制更多圖形(餅圖,折線圖,箱線圖等)map()元素映射apply()基於自定義函數的元素級操作

10、其他函數

函數含義append()序列元素的追加(需指定其他序列)diff()一階差分round()元素的四捨五入sort_values()按值排序sort_index()按索引排序to_dict()轉為字典tolist()轉為列表unique()元素排重
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved