一、什么是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é)果:
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'])
- 查看某幾列的數(shù)據(jù)(將想要查看的列名放在一個(gè)列表中)
import pandas as pd
data = pd.read_excel('D:\pandas\pytest2.xlsx')
print("查看Name列、age列的數(shù)據(jù)")
print(data[['Name', 'age']])
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())
- 查看數(shù)據(jù)框中的非空值
data.notnull() #查看數(shù)據(jù)框中的非空值
import pandas as pd
data = pd.read_excel('D:\pandas\pytest3.xlsx')
print(data.notnull())
- 移除數(shù)據(jù)框中的非空值
data.dropna(axis = 1) #移除數(shù)據(jù)框中包含空值的列
import pandas as pd
data = pd.read_excel('D:\pandas\pytest3.xlsx')
print(data.dropna())

- 替換數(shù)據(jù)框中的非空值
data.fillna(x) #將數(shù)據(jù)框中的所有空值替換為x
import pandas as pd
data = pd.read_excel('D:\pandas\pytest3.xlsx')
print(data.fillna('變身'))
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