作者|Ankit Goel
編譯|VK
來源|Towards Data Science
Pandas是一個強大的開源資料分析和操作庫,它可以幫助你對資料進行各種操作,并生成有關它的不同報告,我將把這篇文章分成兩篇
-
基本知識-我將在這個故事中介紹,我將介紹Pandas的基本功能,這些功能將使你大致了解如何開始使用Pandas,以及它如何幫助你節省大量時間,
-
高級-將通過高級的功能,使它更容易解決復雜的分析問題,它將涵蓋的主題,如風格,繪圖,讀取多個檔案等,第二部分仍在進行中,敬請期待,

在開始之前,確保你已經安裝了Pandas,如果沒有,你可以使用以下命令下載它,
# 如果你使用的是Anaconda
conda install -c conda-forge pandas
# 使用pip安裝Pandas
pip install pandas
# 匯入pandas
import pandas as pd
在這個練習中,我將使用著名的泰坦尼克號資料集,我建議你從Github下載資料和notebook,將其復制到你的環境中:https://github.com/ankitgoel1602/data-science/tree/master/data-analysis/pandas
有關資料的更多詳細資訊,請參閱Kaggle:https://www.kaggle.com/c/titanic/data?select=train.csv,
讓我們開始,我試圖保持資料分析的一般流程,比如從讀取資料開始,然后在資料分析程序中經歷不同的步驟,
1.使用read_csv或read_excel讀取資料
任何資料分析的起點都是獲取資料集,pandas提供不同的函式來讀取不同格式的資料,最常用的是
read_csv( )
這允許你讀取CSV檔案,
pd.read_csv('path_to_your_csv_file.csv')
panda提供了不同的選項來配置列名、資料型別或要讀取的行數,查看Pandas read_csv API了解更多詳細資訊:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html,

read_excel( )
這允許你讀取Excel檔案,
pd.read_excel('path_to_your_excel_file.xlsx')
與CSV一樣,Pandas為read_excel提供了一組豐富的選項,允許你在excel中讀取特定的作業表名稱、資料型別或要讀取的行數,查看Pandas read_excel API了解更多詳細資訊:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html
Pandas支持很多其他資料型別,如果你正在使用其他資料型別,請查看Pandas檔案:https://pandas.pydata.org/pandas-docs/stable/reference/io.html
讀取泰坦尼克號資料集,我們將在這里使用read_csv命令
# 你可以從提供的Github鏈接獲取它,
# 將Titanic資料集加載到titanic_data中
titanic_data = https://www.cnblogs.com/panchuangai/p/pd.read_csv('titanic_train.csv')
這將創建一個Pandas資料幀(如表),并將其存盤到titanic_data中,
接下來,我們將了解如何獲取有關加載的資料的更多詳細資訊,
2.使用head、tail或sample來探索資料,
一旦我們加載了資料,我們想回顧一下,panda提供了不同的api,我們可以使用它們來探索資料,
head( )
這類似于SQL中的TOP命令,從資料幀的開始給我們提供前'n'條記錄,
# 從資料幀中選擇前5(n=5)條記錄
titanic_data.head(5)

tail( )
這給了我們資料幀末尾的“n”條記錄,
# 從資料幀中選擇最后5條(n=5)條記錄
titanitc_data.tail(5)

sample( )
這將從資料中隨機獲取“n”個記錄,注意-此命令在不同運行時的輸出可能不同,
titanic_data.sample(5)

3.使用shape獲取資料維度
一旦我們有了資料,我們就需要知道我們要處理的行或列的數量,而Pandas的shape API提供的正是這些,讓我們看看
# dataframe的形狀,注意結尾沒有括號,因為它是dataframe的屬性
titanic_data.shape
(891, 12)
4.使用info( )查看資料摘要
讓我們先看看這個的輸出
titanic_data.info()

正如你所看到的,“info”提供了一個很好的資料摘要,讓我們一個一個地了解它,
-
索引詳細資訊-Pandas中的每個資料幀都有一個索引,如果你熟悉SQL,它就像是我們創建用來訪問資料的索引,這里意味著我們有一個從0到890的范圍索引,即總共891行,
-
“info”生成的表中的每一行都向我們提供了有關列的詳細資訊、列中的值的數量以及pandas分配給它的資料型別,這對于了解缺失資料非常有用,例如我們可以說我們只有714行的“Age”資料,
-
記憶體使用-Pandas將資料幀加載到記憶體中,這將告訴我們資料集使用了多少記憶體,當我們有大的資料集時,這就很方便了,pandas有一個特定的API“memory_usage”來獲得更多關于記憶體的資訊,
5.使用describe()的資料統計
這給了我們關于資料集的統計資料,如你所見,我們的資料幀如下所示

如你所見,它為每一列提供了許多資訊,如記錄計數(不計算丟失的記錄,如年齡)、平均值、標準差、最小值和不同分位數百分比,默認情況下,此命令提供有關數值資料型別(如int或float)的資訊,要獲取“object”列的統計資訊,我們可以運行
# 顯示有關物件列的統計資訊
titanic_data.describe(include=['O'])

如果你注意到,我們在describe API中添加了'include'引數,它是一個串列,我們可以傳遞多個值,比如-
-
include=[‘O’, ’int64']-將提供關于DataFrame中Object和int64型別列的統計資訊,
-
include=[‘O’, ‘float64’]-將提供關于DataFrame中Object和float64型別列的統計資訊,
與“include”類似,我們也可以使用“exclude”,它將在計算統計時排除列型別,如果你對更多細節感興趣,請參閱Pandas檔案:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html,
6.使用loc和iloc進行資料選擇
這些都是非常有用的函式,可以幫助我們選擇資料,使用這些我們可以選擇資料的任何部分,為了更好地理解它,讓我們更改資料的索引(如果你不理解,請不要擔心,我將在第2部分中討論),
# 將資料幀的索引從RangeIndex更改為“Ticket”值
titanic_ticket_index = titanic_data.set_index('Ticket')

loc( )
這將根據標簽(即列和行的名稱)選擇資料,例如,在上面的資料中,行標簽類似于A/5 21171, PC17599, 113803,列標簽類似于PassengerId, Survived, Sex,loc的一般語法是-
dataframe_name.loc[row_labels, column_labels(optional)]
行標簽和列標簽可以采用不同的值,讓我們看一些例子來更好地理解它,
選擇單行
輸入你想要的行的標簽,即,如果我們想選擇'Ticket',其中的值是'A/5 21171',
# 注意我們需要使用[]方括號
# 這將回傳與名稱匹配的行的資料,
titanic_ticket_index.loc['A/5 21171']

選擇多行
很多時候,我們需要選擇多行,以便進一步分析,.loc API可以獲取要選擇的行標簽串列,即,

或者類似的
# 我們可以提供 start_label:end_label
# 這里我們選擇標簽為“PC 17599”到“373450”的行
titanic_ticket_index.loc['PC 17599':'373450']

注意-如果多行具有相同的標簽,這將不起作用,
選擇單列
這與我們選擇行的方式類似,但是在選擇列時,我們需要告訴Pandas我們要選擇的行,我們可以用“:”代替行標簽,這意味著我們要選擇所有行,
# 為所有行選擇列,
titanic_ticket_index.loc[:,'Embarked']

選擇多個列
與我們對多行所做的類似,只需要告訴Pandas我們正在選擇哪些行,
# 為所有行選擇Sex, Age, Fare, Embarked列 .
titanic_ticket_index.loc[:,['Sex','Age','Fare','Embarked']]

或者類似的
# 我們可以提供start_label:end_label
# 在這里,我們選擇的列為 label 'Sex' 到 'Embarked'
titanic_ticket_index.loc[:, 'Sex':'Embarked']

選擇特定的行和列

iloc()
這與loc類似,但基于索引而不是標簽選擇行和列,與標簽不同的是,索引總是從0開始,到第7行的數目是1,列的索引總是從0到第1列,
讓我們看一個例子
# 選擇特定的行和列:示例2
# 對于列和行我們都可以用start_label:end_label
# 選擇第3至第6行和第1至第4列
# 結束索引應比所需的行或列大1
titanic_ticket_index.iloc[3:7, 1:5]

在這里,我們沒有像對“loc”那樣查看示例,如果你想知道我們是如何使用iloc實作同樣的結果的,你可以參考Github:https://github.com/ankitgoel1602/data-science/blob/master/data-analysis/pandas/pandas_basic_functions_overview.ipynb
7.在列中使用value_counts()獲取唯一值
Value_counts為我們提供列中唯一值的計數,這對于了解以下資訊非常有用
-
列中有不同的值,
-
最常見值,
-
最頻繁值的比例,
# Sex列的值計數,
titanic_data['Sex'].value_counts()
# 輸出
male 577
female 314
Name: Sex, dtype: int64
如你所見,我們的資料集包含了更多的男性,我們甚至可以將其標準化以查看值之間的分布,
# 為性別列計數并標準化
titanic_data['Sex'].value_counts(normalize=True)
#輸出
male 0.647587
female 0.352413
Name: Sex, dtype: float64
這意味著,在我們的資料集中,男性與女性的比例約為65:35,
8.使用query( )篩選資料
通常,我們使用難以分析的大型資料集,在這種情況下,策略是過濾不同條件下的資料并對其進行分析,我們只需使用Pandas查詢API的一行代碼就可以做到這一點,
讓我們舉幾個例子來更好地理解它,
選擇年齡>15的行,
# 前5個年齡大于15歲的記錄
titanic_data.query('Age > 15').head(5)

選擇幸存的男性,
# 前5名幸存的男性
titanic_data.query('Sex=="male" and Survived==1').head(5)

我們可以定義變數并使用它們來撰寫過濾器查詢,當我們需要撰寫腳本時,它會很方便,
# gender_to_select和min_fare,這些都可以作為引數的一部分傳遞給腳本
gender_to_select = "female"
min_fare = 50
# 使用傳遞的屬性查詢
titanic_data.query('(Sex==@gender_to_select) and (Fare > @min_fare)')

結論
我希望這篇文章能幫助你開始使用Pandas并簡化資料分析程序,如前所述,在本文中,我試圖涵蓋涉及資料分析程序不同領域的基本函式,我將繼續補充更多,
Pandas提供了許多不同的api,可以幫助對資料執行高級操作,如繪圖、風格等,我將在本系列的第2部分中介紹這些api,
原文鏈接:https://towardsdatascience.com/pandas-put-away-novice-data-analyst-status-part-1-7e1f0107dae0
歡迎關注磐創AI博客站:
http://panchuang.net/
sklearn機器學習中文官方檔案:
http://sklearn123.com/
歡迎關注磐創博客資源匯總站:
http://docs.panchuang.net/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/705.html
標籤:其他
