【pandas学习笔记(一)】pandas基本使用

pandas简介

pandas是一个基于numpy的数据处理库,其主要的用途为数据分析及其处理,特别是序列及表格数据

引入pandas库

>>> 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

在这里将略带过下通过二维数组创建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

基于DataFrame的统计

在本模块中,我们将以计算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()

你可能感兴趣的:(python,numpy,列表)