以下内容为本人原创
原文链接:https://blog.csdn.net/Yhen1/article/details/114035467
作者:@Yhen
发布网站:CSDN
未经本人同意禁止转载,如需转载请说明此出处,违者必究
最近买了本数据分析的书,打算跟着书上的内容学习Python数据分析。
但学了又容易忘记,所以就打算写成博文分享出来同时也当做笔记了
(本文所有文字及表格为纯手打,创作不易,可否点赞支持一哈?)
本博客会收录入本人专栏“Yhen数据分析笔记”
本文是第一篇
首先学习的是Python数据分析的三剑客之一的Pandas
文章目录
一.Pandas概述
Pandas是数据分析的三剑客之一,是python的核心数据分析库,他提供了快速灵活的数据结构,能够简单,直观,快速的处理各种类型的数据。
1.Pandas能够处理以下类型的数据:
- 与SQL或Excel类似的数据
- 有序和无序(非固定频率)的时间序列数据
- 带行列标签的矩阵数据
- 任何其他形式的观测,统计数据集
2.Pandas的功能很多,他的优势如下:
- 处理浮点与非浮点数据里面的缺失数据,表示为NAN.
- 大小可变,例如插入或者删除DataFrame等多为对象的列
- 自动,显式数据对齐,显式的将对象与一组标签对齐,也可以忽略标签,在Series,DataFrame计算时自动与数据对齐
- 强大,灵活的分组统计(groupby)功能,即数据聚合,数据转换。
- 可以把Python和Numpy中不规则,不同索引的数据轻松的转换成DataFrame对象.
- 直观的合并(merge),连接(join)数据集.
- 灵活的重塑(reshape),透视(pivot)数据集
- 成熟的导入导出工具,导入文本文件(CSV等支持分隔符的文件),Excel文件,数据库等数据;导出Excel文件,文本文件等,利用超快的HDF5格式保存或加载数据.
- 支持日期范围生成,频率转换,移动窗口统计,移动窗口线性回归,日期位移等时间序列功能.
二.Pandas的安装
直接用pip安装即可
pip install pandas
三.Pandas使用实例
1.Series对象
Series是Python的Pandas库中的一种数据结构,它类似一维数组,由一组数据以及这组数据相关的标签组成,或者仅有一组数据而没有索引也可以创建一个简单的Series对象,Series可以储存整数,浮点数,字符串,Python对象等多种类型的数据。
①创建Series对象
s=pd.Series(data,index=index)
参数说明:
- data:表示数据,支持Python字典,多维数组,标量值.
- index:表示行标签
- 返回值:Series对象
实例:
import pandas as pd
s=pd.Series([80,60,75])
print(s)
运行结果:
默认的行索引是0 1 2
也可以
②手动设置索引
import pandas as pd
s1=pd.Series([100,110,120],index=['语文','数学','英语'])
print(s1)
运行结果:
③Series的位置索引
位置索引是从0开始,[0]是第一个数,[1]是第二个数…以此类推.
实例:通过位置索引获取数据
以刚刚的数据为例,想要通过位置索引获取“数学”成绩,应该怎么做呢?
import pandas as pd
s1=pd.Series([100,110,120],index=['语文','数学','英语'])
print(s1[1])
运行结果:
直接通过数学的位置索引“1”取得即可
我们也可以直接通过
④标签索引
来获取数据
比如我想要获取英语成绩,那么就可以直接通过“英语成绩”这个标签取出
import pandas as pd
s1=pd.Series([100,110,120],index=['语文','数学','英语'])
print(s1['英语'])
运行结果:
那么如果想要同时获取语文和英语的成绩呢?
print(s1[['语文','英语']])
运行结果:
当然,我们也可以通过
⑤切片索引
的方式同时获取语文到英文的数据
print(s1['语文':'英语'])
运行结果:
同样,我们用
⑥位置切片
也可以达到同样的效果
print(s1[0:3])
运行结果:
⑦获取Series的索引和值
#获取索引
print(s1.index)
#获取索引
print(s1.index)
运行结果分别如下:
2.DataFrame对象
DataFrame对象是Pandas库中的一种数据结构,他是由多种类型的列组成的二维表数据结构,类似于Excel,SQL或者Series对象构成的字典,DataFrame是最常用的Pandas对象,它与Series一样支持多种类型的数据。
实例①:创建一个DataFrame对象
import pandas as pd
pd.set_option("display.unicode.east_asian_width",True)
data=[[110,120,130],[120,130,140],[140,150,160]]
#行索引
index=[0,1,2]
#列索引
columns=['语文','数学','英语']
df=pd.DataFrame(data=data,index=index,columns=columns)
print(df)
运行结果:
实例②:遍历DataFrame对象
#遍历DataFrame对象的每一列
for col in df.columns:
#以列号为索引取出数据
series=df[col]
print(series)
运行结果:
从运行结果可以得知,其实上述代码返回的其实是Series.
实例③:通过字典创建DataFrame对象
df=pd.DataFrame(
{
'语文' :[110,120,130],
'数学':[100,120,98],
'英语':[100,130,108]
},index=['小明','小红','小王']
)
print(df)
运行结果:
DataFrame的重要属性和函数
重要属性及描述
属性 | 描述 | 举例 |
---|---|---|
values | 查看所有元素的值 | df.values |
dtypes | 查看所有元素的类型 | df.dtypes |
index | 查看所有行名,重命名行名 | df.index ,df.index=[1,2,3] |
columns | 查看所有列名,重命名列名 | df.columns,df.columns=[‘语文’,‘数学’,‘英语’] |
T | 行列数据转换 | df.T |
head | 查看前n条数据,默认五条 | df.head() ,df.head(10) |
tail | 查看后条数据,默认五条 | df.tail() ,df.tail(10) |
shape | 查看行数和列数,[0]表示行,[1]表示列 | df.shape[0],df.shape[1] |
info | 查看索引,数据类型和内存信息 | df.info |
重要函数及描述
函数 | 描述 | 举例 |
---|---|---|
describe | 查看每列的统计汇总信息,DataFrame类型 | df.describe() |
count | 返回每一列的非空值的个数 | df.count() |
sum | 返回每一列的和,无法计算返回空值 | df.sum() |
max | 返回每一列的最大值 | df.max() |
min | 返回每一列的最小值 | df.min() |
argmax | 返回最大值所在的自动索引位置 | df.argmax() |
argmin | 返回最小值所在的自动索引位置 | df.argmin() |
idxmax | 返回最大值所在的自定义索引位置 | df.idxmax() |
mean | 返回每一列的平均数 | df.mean() |
median | 返回每一列的中位数 | df.median() |
var | 返回每一列的方差 | df.var() |
std | 返回每一列的标准差 | df.std() |
isnull | 检查每一列的空值,空值为True;否则为False,返回布尔类型数值 | df.isnull() |
notnull | 检查每一列的空值,空值为False;否则为True,返回布尔类型数值 | df.notnull() |
这篇文章介绍了 Pandas的Series对象和DataFrame对象
下篇文章将介绍使用pandas导入外部数据
关注本专栏“Yhen数据分析笔记”及时获取文章更新
(本文所有文字及表格为纯手打,创作不易,可否点赞支持一哈?)