- Pandas是Python最重要的数据分析工具包,是Panel Data Analysis的缩写,也是目前最为流行的Python数据分析工具。最初被作为金融数据分析工具由全球资产管理公司AQR于2008年4月开发,并于2009年底开源出来。
- Matplotlib和Seaborn是最为常用的数据可视化的工具包,解决如何通过数据来绘制图表,来更好的展示数据。
- NumPy是一个用于数值运算的Python库,专门对数值运算进行优化,最大的优势是快。Pandas底层数据结构采用NumPy来实现,我们也可以把Pandas理解成是对NumPy的封装,让数据分析的一些功能的实现变得更容易。
Pandas
安装
pip install pandas
Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
- 作用:
- 数据读写
- 数据整理
- 数据分析
Pandas的数据被分为三部分: 行索引(index), 列索引(columns)及数据内容(data).
- 先写一段代码看一下数据结构
# 导入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)
运行后
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),然后通过索引来访问数组中的数据。
# 导入Series
from pandas import Series, DataFrame
# 创建Series,使用默认索引
sel = Series(data=[101, '鲁班', '18', '150.00', '男'])
print(sel)
打印结果
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)。
加入索引
# 导入Series
from pandas import Series, DataFrame
# 创建Series,使用默认索引
sel = Series(data=[101, '鲁班', '18', '150.00', '男'],
index=['ID号', '姓名', '年龄', '身高', '性别']
)
print(sel)
打印结果
D:\study\workon\ScrapyStudy\Scripts\python.exe D:/study/ScrapyStudy/study_pandas/demo2.py
ID号 101
姓名 鲁班
年龄 18
身高 150.00
性别 男
dtype: object
在创建Series时数据并不一定要是列表,也可以将一个字典传进去。
==
当数据是字典的时候,会将字典的键作为索引,字典的值作为索引对应的数据值==
from pandas import Series,DataFrame
# 将字典转换为Series
dic={"red":100,"black":400,"green":300,"pink":900}
se2=Series(data=dic)
print(se2)
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中表
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的中的行列索引的值。
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数据
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 的集合。