一、Python數(shù)據(jù)分析之Pandas學(xué)習(xí)

一、什么是Pandas?

pandas是基于NumPy的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。Pandas納入了大量庫(kù)和一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,提供了高效地操作大型數(shù)據(jù)集所需的工具。pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法,是python的一個(gè)數(shù)據(jù)分析包。
Pandas模塊具有高性能、高效率和高水平,使之成為數(shù)據(jù)分析最有效的庫(kù)。

二、Pandas的數(shù)據(jù)結(jié)構(gòu)

pandas的數(shù)據(jù)結(jié)構(gòu)中,常用的有Series和DataFrame兩種

1、Series:一維數(shù)組,與Numpy中的一維array類(lèi)似。二者與Python基本的數(shù)據(jù)結(jié)構(gòu)List也很相近。Series如今能保存不同種數(shù)據(jù)類(lèi)型,字符串、boolean值、數(shù)字等都能保存在Series中。

Series與List的區(qū)別是:List中的元素可以是不同的數(shù)據(jù)類(lèi)型,而Series中則只允許存儲(chǔ)有相同的數(shù)據(jù)類(lèi)型,這樣是為了更有效地的使用內(nèi)存,提高運(yùn)算效率。

2、Time- Series:以時(shí)間為索引的Series。
3、DataFrame:二維的表格型數(shù)據(jù)結(jié)構(gòu)。很多功能與R中的data.frame類(lèi)似。可以將DataFrame理解為Series的容器。
4、Panel :三維的數(shù)組,可以理解為DataFrame的容器。

三、Pandas的IO功能

Pandas的IO功能十分強(qiáng)大,可以兼容許多文本文件,例如:csv、xml、HTML、xls、xlsx等

1、導(dǎo)入數(shù)據(jù)集的語(yǔ)法為:
pd.read_excel(filename) #導(dǎo)入Excel格式文件中的數(shù)據(jù)
pd.read_excel(filename) #導(dǎo)入Excel格式文件中的數(shù)據(jù)

2、創(chuàng)建Excel表

import pandas as pd      #導(dǎo)入pandas模塊,命名為pd

a = pd.DataFrame({'ID':[1, 2, 3],'User':['A', 'B', 'C']})    #創(chuàng)建ID列和User列
a = a.set_index('ID')   #以ID為索引
print(a)
a.to_excel('D:\pandas\pytest.xlsx')    #新建pytest.xlsx文件,將以上信息保持到該文件中
print('成功啦!')

運(yùn)行結(jié)果:


1

2

3、查看數(shù)據(jù)框

data.info() #查看數(shù)據(jù)框(Data Frame)的索引、數(shù)據(jù)類(lèi)型及內(nèi)存信息

  • pytest.xlsx文件中的內(nèi)容為:


    3
  • 查看數(shù)據(jù)框代碼如下:
import pandas as pd

data = pd.read_excel('D:\pandas\pytest.xlsx')
data.info()
  • 代碼執(zhí)行結(jié)果:


    4

4、查看數(shù)據(jù)框行與列:

data.shape #查看數(shù)據(jù)框的行數(shù)和列數(shù)

import pandas as pd      

data = pd.read_excel('D:\pandas\pytest.xlsx')
print(data.shape)

#運(yùn)行結(jié)果:(3, 2)

5、查看數(shù)據(jù)前n行、中間某幾行或后n行:

data.head(n) #查看數(shù)據(jù)框的前n行
data.tail(n) #查看數(shù)據(jù)框的后n行
data.iloc[a:b,c:d] #查看第a+1行到b行,c+1列到d列的數(shù)據(jù)

  • D:\pandas\pytest2.xlsx 文件內(nèi)容如下:


    5
import pandas as pd

data = pd.read_excel('D:\pandas\pytest2.xlsx')
print(data)
print("前2行的數(shù)據(jù)為:")
print(data.head(2))
print("后1行的數(shù)據(jù)為:")
print(data.tail(1))
print("2、3行與2、3列交叉的數(shù)據(jù)為:")
print(data.iloc[1:3, 1:3])
  • 運(yùn)行結(jié)果:


    6

四、數(shù)據(jù)選取與清洗:

1、查看某一列的數(shù)據(jù)

data[col] #以數(shù)組Series的形式返回選取的列

  • 查看某一列的數(shù)據(jù)
import pandas as pd

data = pd.read_excel('D:\pandas\pytest2.xlsx')
print("查看Name列的數(shù)據(jù)")
print(data['Name'])
7
  • 查看某幾列的數(shù)據(jù)(將想要查看的列名放在一個(gè)列表中)
import pandas as pd

data = pd.read_excel('D:\pandas\pytest2.xlsx')
print("查看Name列、age列的數(shù)據(jù)")
print(data[['Name', 'age']])
8

2、數(shù)據(jù)中非空值的處理

  • pytest3.xlsx文件中的內(nèi)容為:


    9
  • 查看數(shù)據(jù)中的空值

data.isnull() #檢查數(shù)據(jù)中空值出現(xiàn)的情況,并返回一個(gè)布爾值(True或False組成的列)

import pandas as pd

data = pd.read_excel('D:\pandas\pytest3.xlsx')
print(data.isnull())
10
  • 查看數(shù)據(jù)框中的非空值

data.notnull() #查看數(shù)據(jù)框中的非空值

import pandas as pd

data = pd.read_excel('D:\pandas\pytest3.xlsx')
print(data.notnull())
11
  • 移除數(shù)據(jù)框中的非空值

data.dropna(axis = 1) #移除數(shù)據(jù)框中包含空值的列

import pandas as pd

data = pd.read_excel('D:\pandas\pytest3.xlsx')
print(data.dropna())
12
  • 替換數(shù)據(jù)框中的非空值

data.fillna(x) #將數(shù)據(jù)框中的所有空值替換為x

import pandas as pd

data = pd.read_excel('D:\pandas\pytest3.xlsx')
print(data.fillna('變身'))
13

3、數(shù)據(jù)框中值的替換

  • pytest4.xlsx文件的內(nèi)容如下:


    14
  • 替換值
import pandas as pd

data = pd.read_excel('D:\pandas\pytest4.xlsx')
data2 = data.replace('變身', '0')
data2.to_excel('D:\pandas\pytest4.xlsx')
print('ok')

#運(yùn)行結(jié)果:ok
  • 代碼運(yùn)行后excel表格數(shù)據(jù)變?yōu)椋?/p>

    15
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容