• Pandas是Python最重要的数据分析工具包,是Panel Data Analysis的缩写,也是目前最为流行的Python数据分析工具。最初被作为金融数据分析工具由全球资产管理公司AQR于2008年4月开发,并于2009年底开源出来。
  • Matplotlib和Seaborn是最为常用的数据可视化的工具包,解决如何通过数据来绘制图表,来更好的展示数据。
  • NumPy是一个用于数值运算的Python库,专门对数值运算进行优化,最大的优势是快。Pandas底层数据结构采用NumPy来实现,我们也可以把Pandas理解成是对NumPy的封装,让数据分析的一些功能的实现变得更容易。

Pandas

安装

1
pip install pandas

Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 作用:
    • 数据读写
    • 数据整理
    • 数据分析
      Pandas的数据被分为三部分: 行索引(index), 列索引(columns)及数据内容(data).
  • 先写一段代码看一下数据结构
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 导入pandas模块
    import pandas

    # 通过Series存储每个英雄的基本信息
    # 创建Series
    s1 = pandas.Series([101, '鲁班', '18', '150.00', '男'])
    s2 = pandas.Series([102, '小乔', '19', '167.00', '女'])
    s3 = pandas.Series([103, '关羽', '30', '180.00', '男'])
    s4 = pandas.Series([104, '大乔', '20', '170.00', '女'])
    s5 = pandas.Series([105, '孙策', '22', '185.00', '男'])

    series_list = [s1, s2, s3, s4, s5]

    # 创建一个DataFrame对象存储通讯录
    df = pandas.DataFrame(series_list)

    # 打印刚刚构造的DataFrame
    print(df)

    运行后
    1
    2
    3
    4
    5
    6
    7
    D:\study\workon\ScrapyStudy\Scripts\python.exe D:/study/ScrapyStudy/study_pandas/demo1.py
    0 1 2 3 4
    0 101 鲁班 18 150.00 男
    1 102 小乔 19 167.00 女
    2 103 关羽 30 180.00 男
    3 104 大乔 20 170.00 女
    4 105 孙策 22 185.00 男

    Series 的创建

    Series是Pandas中最基本的对象,Series类似一种一维数组。事实上,Series 基本上就是基于 NumPy 的数组对象来的。和 NumPy 的数组不同,Series 能为数据自定义标签,也就是索引(index),然后通过索引来访问数组中的数据。
    1
    2
    3
    4
    5
    6
    # 导入Series
    from pandas import Series, DataFrame

    # 创建Series,使用默认索引
    sel = Series(data=[101, '鲁班', '18', '150.00', '男'])
    print(sel)
    打印结果
    1
    2
    3
    4
    5
    6
    7
    D:\study\workon\ScrapyStudy\Scripts\python.exe D:/study/ScrapyStudy/study_pandas/demo2.py
    0 101
    1 鲁班
    2 18
    3 150.00
    4 男
    dtype: object
    一个Series其实就是一条数据,Series方法的第一个参数是data,第二个参数是index(索引),如果没有传值会使用默认值(0-N)。

    加入索引

    1
    2
    3
    4
    5
    6
    7
    8
    # 导入Series
    from pandas import Series, DataFrame

    # 创建Series,使用默认索引
    sel = Series(data=[101, '鲁班', '18', '150.00', '男'],
    index=['ID号', '姓名', '年龄', '身高', '性别']
    )
    print(sel)
    打印结果
    1
    2
    3
    4
    5
    6
    7
    D:\study\workon\ScrapyStudy\Scripts\python.exe D:/study/ScrapyStudy/study_pandas/demo2.py
    ID号 101
    姓名 鲁班
    年龄 18
    身高 150.00
    性别 男
    dtype: object

在创建Series时数据并不一定要是列表,也可以将一个字典传进去。

==
当数据是字典的时候,会将字典的键作为索引,字典的值作为索引对应的数据值==

1
2
3
4
5
6
from pandas import Series,DataFrame

# 将字典转换为Series
dic={"red":100,"black":400,"green":300,"pink":900}
se2=Series(data=dic)
print(se2)
1
2
3
4
5
red      100
black 400
green 300
pink 900
dtype: int64

==index参数是我们自定义的索引值,注意:参数值的个数一定要相同==

Series是一组带索引数组,与list相似,一般我们用其承装一条数据或者一行数据。多个Series可组成一个DataFrame

DataFrame 的创建

DataFrame(数据表)是一种 2 维数据结构,数据以表格的形式存储,分成若干行和列。通过 DataFrame,你能很方便地处理数据。
调用DataFrame()可以将多种格式的数据转换为DataFrame对象,它的的三个参数data、index和columns分别为数据、行索引和列索引。DataFrame的数据结构类似Excel或者SQL中表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from pandas import Series, DataFrame

# 创建二维列表存储选手信息
m_list = [['上单', '小明', 20],
['打野', '小张', 19],
['中单', '九成', 23],
['射手', '伽罗', 22],
['辅助', '牛牛', 21]]
# 创建dataframe
df = DataFrame(data=m_list)
print(df)
#################################
D:\study\workon\ScrapyStudy\Scripts\python.exe D:/study/ScrapyStudy/study_pandas/demo3.py
0 1 2
0 上单 小明 20
1 打野 小张 19
2 中单 九成 23
3 射手 伽罗 22
4 辅助 牛牛 21

m_list 是使用一个二维列表,将每一个信息存储到一个列表中

调用DataFrame()将二维列表转换为DataFrame对象,行列索引使用的是默认0-N数字代表。
可以通过给DataFrame构造函数中的参数index,columns传值,来设定DataFrame的中的行列索引的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from pandas import Series, DataFrame

# 创建二维列表存储选手信息
m_list = [['上单', '小明', 20],
['打野', '小张', 19],
['中单', '九成', 23],
['射手', '伽罗', 22],
['辅助', '牛牛', 21]]
# # 创建dataframe
# df = DataFrame(data=m_list)
# print(df)
# 创建dataframe
df = DataFrame(data=m_list,
index=['a', 'b', 'c', 'd', 'e'],
columns=['位置', 'ID号', '年龄'])
print(df)

##################################
D:\study\workon\ScrapyStudy\Scripts\python.exe D:/study/ScrapyStudy/study_pandas/demo3.py
位置 ID号 年龄
a 上单 小明 20
b 打野 小张 19
c 中单 九成 23
d 射手 伽罗 22
e 辅助 牛牛 21

也可以使用字典来创建一个DataFrame数据

1
2
3
4
5
6
7
8
9
10
11
from pandas import Series, DataFrame
import pandas as pd

# 使用字典创建
dic = {
'位置': ['上单', '打野', '中单', '射手', '辅助'],
'ID号': ['小明', '小张', '九成', '伽罗', '牛牛'],
'年龄': [20, 19, 23, 22, 21]}
df = pd.DataFrame(dic)
print(df)

当字典格式的数据被dataframe整理后,字典的键将作为数据的列索引值
通过 DataFrame,能很方便地处理数据。常见的操作比如选取、替换行或列的数据,还能重组数据表、修改索引、多重筛选等。我们基本上可以把 DataFrame 理解成一组采用同样索引的 Series 的集合。