Pandas介绍

pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。

Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。

Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。

Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

Pandas 应用

Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。

数据结构

Series 是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。

相关链接

Pandas安装

安装命令:pip install pandas

导入库:**import** pandas as pd 习惯

查看版本:pd.__version__

第一个程序

1
2
3
4
5
6
7
8
import pandas as pd
data = {
'姓名':['小璇','道坤','阿福'],
'年龄':[18,20,21]
}

myData = pd.DataFrame(data)
print(myData)

image-20230103101459275

Pandas 数据结构 - Series

Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。

Series 由索引(index)和列组成,函数如下:

1
pandas.Series( data, index, dtype, name, copy)

参数说明:

  • data:一组数据(ndarray 类型)。
  • index:数据索引标签,如果不指定,默认从 0 开始。
  • dtype:数据类型,默认会自己判断。
  • name:设置名称。
  • copy:拷贝数据,默认为 False。

实例1

1
2
3
4
5
6
7
import pandas as pd

a = [1, 2, 3]

myvar = pd.Series(a)

print(myvar)

image-20230103102000091

按照索引输出

1
2
3
4
5
import pandas as pd
data = [1,2,3,4]
myData = pd.Series(data)
print(myData)
print('指定索引',myData[2])

image-20230103102207333

修改索引

1
2
3
4
5
6
7
import pandas as pd
data = [1,2,3,4]
myData = pd.Series(data)
print(myData)
# 修改索引
myData = pd.Series(data,index=['阿福1','阿福2','阿福3','阿福4'])
print(myData)

image-20230103103120761

创建字典形式的Series

1
2
3
4
5
6
7
8
9
import pandas as pd
data = {
1:'道坤',
2:"小璇",
3:'阿福'
}

myData = pd.Series(data)
print(myData)

image-20230103103735264

增加一个name 属性

1
2
3
4
5
6
7
8
9
10
import pandas as pd
data = {
1:'道坤',
2:"小璇",
3:'阿福'
}

# 增加一个name属性
myData = pd.Series(data,name='个人数据')
print(myData)

image-20230103103920610

Pandas 数据结构 - DataFrame

DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。

DataFrame 构造方法如下:

1
pandas.DataFrame( data, index, columns, dtype, copy)

参数说明:

  • data:一组数据(ndarray、series, map, lists, dict 等类型)。
  • index:索引值,或者可以称为行标签。
  • columns:列标签,默认为 RangeIndex (0, 1, 2, …, n) 。
  • dtype:数据类型。
  • copy:拷贝数据,默认为 False。

Pandas DataFrame 是一个二维的数组结构,类似二维数组。

列表创建

1
2
3
4
5
6
7
8
9
import pandas as pd
data = [
['道坤',20],
['小璇',18],
['阿福',20]
]

myData = pd.DataFrame(data,columns=['姓名','年龄'])
print(myData)

image-20230103105550436

使用 ndarrays 创建

ndarray 的长度必须相同, 如果传递了 index,则索引的长度应等于数组的长度。如果没有传递索引,则默认情况下,索引将是range(n),其中n是数组长度。

1
2
3
4
5
6
7
8
import pandas as pd
data = {
'姓名':['阿福','小璇','道坤'],
'年龄':[20,18,19]
}

myData = pd.DataFrame(data,columns=['姓名','年龄'])
print(myData)

image-20230103105829154

使用字典创建

1
2
3
4
5
6
7
8
9
10
import pandas as pd
data = [
{'姓名':'阿福','年龄':19},
{'姓名':'小璇','年龄':18},
{'姓名':'道坤','年龄':19},
{'姓名':'C文', }
]

myData = pd.DataFrame(data,columns=['姓名','年龄'])
print(myData)

没有输入的值为 NaN

image-20230103110251797

返回一行数据

Pandas 可以使用 loc 属性返回指定行的数据,如果没有设置索引,第一行索引为 0,第二行索引为 1,以此类推

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pandas as pd
data = [
{'姓名':'阿福','年龄':19},
{'姓名':'小璇','年龄':18},
{'姓名':'道坤','年龄':19},
{'姓名':'C文', }
]

myData = pd.DataFrame(data,columns=['姓名','年龄'])
# 用 loc 输入索引
print(myData.loc[1])
# 也可以修改索引
# myData = pd.DataFrame(data,index=[1,2,3])

image-20230103113530024

注意:返回结果其实就是一个 Pandas Series 数据。

返回多行数据

1
2
3
4
5
6
7
8
9
10
11
import pandas as pd
data = [
{'姓名':'阿福','年龄':19},
{'姓名':'小璇','年龄':18},
{'姓名':'道坤','年龄':19},
{'姓名':'C文', }
]

myData = pd.DataFrame(data,columns=['姓名','年龄'])
# 用 loc 接受一个参数,所以多行的时候,用 [ ]
print(myData.loc[[0,1]])

image-20230103121411554

Pandas CSV 文件

CSV(Comma-Separated Values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。

CSV 是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。

以info.csv为例(我这里使用的是gbk编码)。

image-20230107123319270

读取csv文件

to_string()返回 DataFrame 类型的数据,如果不使用该函数,则输出数据的💴5行,和后5行,中间部分用….代替。这里我们的数据不够,无法体现。

1
2
3
4
5
import pandas as pd
data = pd.read_csv('info.csv',encoding='gbk')


print(data.to_string())

image-20230107124956156

除了to_string()意外,还有head方法输出前几行。

1
2
3
4
import pandas as pd
data = pd.read_csv('info.csv',encoding='gbk')

print(data.head(1))

image-20230107130018018

tail返回末尾。

1
2
3
4
5
import pandas as pd
data = pd.read_csv('info.csv',encoding='gbk')


print(data.tail(2))

image-20230107130151945

info()方法返回表格的一些基本信息。

写入CSV

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pandas as pd

# 两个字段
name = ['阿福','小璇','道坤']
skill =['吃饭','英语','计算机一级']

# 字典
dictInfo ={'姓名':name,'技能':skill}

# 把数据转换成pd类型
data = pd.DataFrame(dictInfo)

# 保存
data.to_csv('skill.csv')

结果

image-20230107125705273