pandas是一个基于numpy的数据处理库,其主要的用途为数据分析及其处理,特别是序列及表格数据
>>> import numpy as np
>>> import pandas as pd
pandas库经常与numpy库一起配合使用
创建序列的方法主要有三种:创建一维数组,创建字典以及提取DataFrame中的某一列
我们先来看第一种方法,通过一维数组创建序列:
>>> arr1 = np.array([1,3,2,5,6,10,7])
>>> s1 =pd.Series(arr1)
>>> print(s1)
输出结果为:
0 1
1 3
2 2
3 5
4 6
5 10
6 7
dtype: int32
第二种方法,通过字典创建序列:
>>> dic1 = {
'高數成績':90,'綫代成績':85,'外語成績':80,'工圖成績':86}
>>> s2 = pd.Series(dic1)
>>> print(s2)
输出结果为:
高數成績 90
綫代成績 85
外語成績 80
工圖成績 86
dtype: int64
第三种方法在后面将与DataFrame创建并结合实例讲解
小结:不管是通过数组还是通过字典创建Series,都要用Series方法将数据转化为Series,其格式为
pd.Series(arr)
# 或者是
pd.Series(dic)
# 其中,arr代表一維數組,dic代表字典
创建DataFrame主要也是有两种方式:二维数组及字典,本文所讲解的实例中,将使用字典的方式创建DataFrame
在这里将略带过下通过二维数组创建DataFrame:
# 假設arr_2D為二維數組
df = pd.DataFrame(arr_2D)
输出的结果中,标签(横着的属性)及索引(竖着的属性)都是自然数(0,1,2,3…)
我们在开始介绍第二种方法前,我先简要介绍下我们的将要引入的实例:
G7全称为七国集团,是一个由世界七大发达经济体所组成的国际组织,其成员国分别为美国、加拿大、英国、法国、德国、意大利及日本。下面,我们将各个成员国的面积,人口,国内生产总值(GDP),基尼系数,人类发展指数以及其使用的货币创建为DataFrame,并在此DataFrame的基础上进行讲解
首先,我们先创建一个嵌套字典
'''通過字典嵌套建立數據框(DataFrame)'''
G7_dic = {
'面積': {
'加拿大': 9984670, '法國': 643801, '德國': 357386, '意大利': 309338, '日本': 337962, '英國': 243610, '美國': 243610},
'人口': {
'加拿大': 37281000, '法國': 65569000, '德國': 81427000, '意大利': 59984000, '日本': 126140000, '英國': 66366000,
'美國': 329100000},
'GDP': {
'加拿大': 1.674, '法國': 2.736, '德國': 4.379, '意大利': 2.234, '日本': 5.747, '英國': 2.808, '美國': 21.439},
'基尼係數': {
'加拿大': 0.337, '法國': 0.301, '德國': 0.307, '意大利': 0.324, '日本': 0.379, '英國': 0.316, '美國': 0.390},
'人類發展指數': {
'加拿大': 0.922, '法國': 0.891, '德國': 0.939, '意大利': 0.873, '日本': 0.915, '英國': 0.920, '美國': 0.920},
'貨幣': {
'加拿大': 'CAD', '法國': 'EUR', '德國': 'EUR', '意大利': 'EUR', '日本': 'JPY', '英國': 'GBP', '美國': 'USD'}}
请注意,外层的键将会被生成为标签(横着的属性),而嵌套内的键将会被生成为索引(竖着的属性)
然后,我们是用pandas库中的DataFrame函数创建DataFrame
G7 = pd.DataFrame(G7_dic)
我们将数据打印出来看看
print("G7國家國情數據\n", G7) # 打印數據
print('') # 空一行
结果如下:
G7國家國情數據
面積 人口 GDP 基尼係數 人類發展指數 貨幣
加拿大 9984670 37281000 1.674 0.337 0.922 CAD
法國 643801 65569000 2.736 0.301 0.891 EUR
德國 357386 81427000 4.379 0.307 0.939 EUR
意大利 309338 59984000 2.234 0.324 0.873 EUR
日本 337962 126140000 5.747 0.379 0.915 JPY
英國 243610 66366000 2.808 0.316 0.920 GBP
美國 243610 329100000 21.439 0.390 0.920 USD
首先,我们介绍下提取特定行的方法:
提取特定行的方法主要有两种:loc 及 iloc
loc方法通过寻找对应索引的方式去提取特定数据:
# 行信息提取
print(G7.loc[['法國']]) # 輸出法國相關信息,注意,兩個中括號
print('')
输出结果
面積 人口 GDP 基尼係數 人類發展指數 貨幣
法國 643801 65569000 2.736 0.301 0.891 EUR
而iloc通过寻找默认索引的方式去提取特定数据的:
print(G7.iloc[0])
print('')
输出结果
面積 9984670
人口 37281000
GDP 1.674
基尼係數 0.337
人類發展指數 0.922
貨幣 CAD
Name: 加拿大, dtype: object
我们还可以检索多行信息:
print(G7.loc[['德國', '意大利']]) # 多行亦是如此,注意,兩個中括號(第一個中括號是loc的調用方式,第二個是需查詢行信息所構成的列表)
print('')
# 小結一句:不管是單行還是多行索引,構建一個列表,并將需要索引的index信息輸入進去
输出结果
面積 人口 GDP 基尼係數 人類發展指數 貨幣
德國 357386 81427000 4.379 0.307 0.939 EUR
意大利 309338 59984000 2.234 0.324 0.873 EUR
请注意loc[]方法中的需要检索的数据需要用列表表示
顺带提下,对于查询头五行的数据有可以用head()方法:
print(G7.head())
print('')
输出结果
面積 人口 GDP 基尼係數 人類發展指數 貨幣
加拿大 9984670 37281000 1.674 0.337 0.922 CAD
法國 643801 65569000 2.736 0.301 0.891 EUR
德國 357386 81427000 4.379 0.307 0.939 EUR
意大利 309338 59984000 2.234 0.324 0.873 EUR
日本 337962 126140000 5.747 0.379 0.915 JPY
我们查看后五行的数据也可以用tail()方法:
print(G7.tail())
print('')
输出结果
面積 人口 GDP 基尼係數 人類發展指數 貨幣
德國 357386 81427000 4.379 0.307 0.939 EUR
意大利 309338 59984000 2.234 0.324 0.873 EUR
日本 337962 126140000 5.747 0.379 0.915 JPY
英國 243610 66366000 2.808 0.316 0.920 GBP
美國 243610 329100000 21.439 0.390 0.920 USD
对于列信息查询,我们可以有:
# 列信息查詢
print(G7[['人口']]) # 輸出G7國家中的人口數據
print('')
# 同行信息之查找,亦可以多列為之
print(G7[['GDP', '貨幣']])
print('')
输出结果
人口
加拿大 37281000
法國 65569000
德國 81427000
意大利 59984000
日本 126140000
英國 66366000
美國 329100000
GDP 貨幣
加拿大 1.674 CAD
法國 2.736 EUR
德國 4.379 EUR
意大利 2.234 EUR
日本 5.747 JPY
英國 2.808 GBP
美國 21.439 USD
最后,我们介绍下查找特定信息的方法,譬如我们需要查找国内生产总值低于三万亿,且使用欧元的国家
print(G7[(G7['GDP'] < 3.0) & (G7['貨幣'] == 'EUR')]) # 查找貨幣為EUR(歐元),且GDP超過3萬億的國家
print("")
对于查找特定信息,我们可以有这样的方法:
DF[(condition1)&(condition2)]
其中condition可以是
df[index] < num
或者是
df[index]==some_data
输出结果如下
面積 人口 GDP 基尼係數 人類發展指數 貨幣
法國 643801 65569000 2.736 0.301 0.891 EUR
意大利 309338 59984000 2.234 0.324 0.873 EUR
在本模块中,我们将以计算G7国家人口的相关数据为例,介绍如何利用pandas对数据进行统计
首先,我们先通过将人口这一列的数据导出的方法创建Series
pop = G7[['人口']] # 導出數據
然后,我们分别用min(),max(),median(),mean()方法分别计算其最小值,最大值,中位数以及均值:
pop_min = pop.min() # 最小值
pop_max = pop.max() # 最大值
pop_med = pop.median() # 中位數
pop_mean = pop.mean() # 平均數
其输出结果如下:
最小 人口 37281000
dtype: int64
最大 人口 329100000
dtype: int64
中位數 人口 66366000.0
dtype: float64
平均 人口 1.094096e+08
dtype: float64
最后,我们总结一下:
1.创建序列的方法为Series(data)或者抽取DataFrame(数据框)中的某一行或某一列,其中,data可以是一维数组,也可以是字典
2.创建数据框的方法为DataFrame
3.抽取数据的时候,别忘了,将需要抽取之数据的属性用列表表示
4.检索特定信息的时候,用括号将条件括起来
5.计算最小值,最大值,中位数及均值的方法分别为min(),max(),median(),mean()