pandas模块
数据分析的流程:
设定问题—》获取数据—》整理及清洗数据—》数据分析及可视化—》建立模型(预测性的分析)—》撰写报告
简介
Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
作用:数据读写;数据整理;数据分析。利用Pandas进行数据操作、预处理、清洗是Python数据分析中的重要技能。
数据结构
不管是Excel还是数据库他们存储数据的方式都是以表格样式进行存储,有行、有列,并且每一行和每一列都有自己的索引,方便我们获取数据。每一行的数据其实就是我们存储的一条数据信息。
Pandas的DataFrame的结构就和他们相同,Series的结构和表中的行的结构相同。
# 导入pandas模块
import pandas as pd
#通过Series存储每个英雄的基本信息
#创建Series
s1 = pd.Series([1001,'鲁班','18','150.00','男'])
s2 = pd.Series([1002,'小乔','19','167.00','女'])
s3 = pd.Series([1003,'关羽','30','180.00','男'])
s4 = pd.Series([1004,'蔡文姬','20','160.00','女'])
s5 = pd.Series([1005,'兰陵王','22','165.00','男'])
series_list=[s1,s2,s3,s4,s5]
#创建一个DataFrame对象存储通讯录
df=pd.DataFrame(series_list)
# 打印刚刚构造的DataFrame
print(df)
0 1 2 3 4
0 1001 鲁班 18 150.00 男
1 1002 小乔 19 167.00 女
2 1003 关羽 30 180.00 男
3 1004 蔡文姬 20 160.00 女
4 1005 兰陵王 22 165.00 男
整个数据被分为三部分:行索引(index
),列索引(columns
)及数据内容(data
)。行、列索引的值在没有自定义的时候,会被默认设置上0-N的值,索引的作用就是为了更好的认知和查询数据。
Series的创建
Series是Pandas中最基本的对象,Series类似一种一维数组。事实上,Series 基本上就是基于 NumPy 的数组对象来的。和 NumPy 的数组不同,Series 能为数据自定义标签,也就是索引(index),然后通过索引来访问数组中的数据。
# 导入Series
from pandas import Series,DataFrame
# 创建Series,使用默认索引
sel = Series(data=[1,'开开心心',20,'高高兴兴']) # Series(data,index)
print(sel)
0 1
1 开开心心
2 20
3 高高兴兴
dtype: object
一个Series其实就是一条数据,Series方法的第一个参数是data,第二个参数是index(索引),如果没有传值会使用默认值(0-N)递增。
# 导入Series
from pandas import Series,DataFrame
# 创建Series,使用自定义索引
sel = Series(data=[1,'小明',20,'各科全面发展'],
index = ['排名','姓名','年龄','评语']) # index参数是我们自定义的索引值,注意:参数值的个数一定要相同
print(sel)
排名 1
姓名 小明
年龄 20
评语 各科全面发展
dtype: object
# 在创建Series时数据并不一定要是列表,也可以将一个字典传进去。
from pandas import Series,DataFrame
# 将字典转换为Series
dic={"排名":1,"姓名":'小明',"年龄":20,"评语":'各科全面发展'}
se2=Series(data=dic)
print(se2)
print(type(se2))
排名 1
姓名 小明
年龄 20
评语 各科全面发展
dtype: object
<class 'pandas.core.series.Series'>
从运行结果可看出,字典的键将成为索引,字典的值是索引对应的值。
综上可以看出,Series是一组带索引数组,与list相似,一般我们用其承装一条数据或者一行数据。多个Series可组成一个DataFrame。
DataFrame的创建
DataFrame(数据表)是一种 2 维数据结构,数据以表格的形式存储,分成若干行和列。
调用DataFrame()
可以将多种格式的数据转换为DataFrame对象,它的的三个参数data
、index
和columns
分别为数据、行索引和列索引。DataFrame的数据结构类似Excel。
from pandas import DataFrame
stu_list=[['bai',24,90],
['jia',23,99],
['hei',23,87]]
df=DataFrame(data=stu_list)
df
0 | 1 | 2 | |
---|---|---|---|
0 | bai | 24 | 90 |
1 | jia | 23 | 99 |
2 | hei | 23 | 87 |
from pandas import DataFrame
stu_list=[['bai',24,90],
['jia',23,99],
['hei',23,87]]
index = [1001,1002,1003]
column = ['name','age','grade']
df=DataFrame(data=stu_list,index=index,columns=column) # 自定义行索引与列索引
df
name | age | grade | |
---|---|---|---|
1001 | bai | 24 | 90 |
1002 | jia | 23 | 99 |
1003 | hei | 23 | 87 |
# 通过字典创建DataFrame
from pandas import DataFrame
stu_dic={'name':['bai','jia','hei'],
'age':[24,23,23],
'grade':[90,99,87]}
index = [1001,1002,1003]
df=DataFrame(data=stu_dic,index=index) # 自定义行索引与列索引
df
name | age | grade | |
---|---|---|---|
1001 | bai | 24 | 90 |
1002 | jia | 23 | 99 |
1003 | hei | 23 | 87 |
字典的键将作为列索引,字典的值将作为一列数据传入
# 渣男备忘录
from pandas import Series,DataFrame
import pandas as pd
index_list=['No1','No2','No3']
dic={
'姓名': Series(['娜娜','喵喵','汪汪'], index=index_list), # 将表格中每一列创建为Series,作为字典的值
'性格': Series(['可爱单纯','风骚火辣','性感高冷'],index=index_list),
'爱好': Series(['逛街、电影、爱吃甜','喝酒、蹦迪、爱吃辣','看书、烘焙、爱吃酸'],index=index_list),
'安排': Series(['2019-2-14去看电影','2019-2-16去蹦迪','2019-2-18去烘焙'],index=index_list)
}
df=DataFrame(dic)
print(df)
姓名 性格 爱好 安排
No1 娜娜 可爱单纯 逛街、电影、爱吃甜 2019-2-14去看电影
No2 喵喵 风骚火辣 喝酒、蹦迪、爱吃辣 2019-2-16去蹦迪
No3 汪汪 性感高冷 看书、烘焙、爱吃酸 2019-2-18去烘焙