Pandas
Pandas基本介绍
Python在数据处理和准备⽅⾯⼀直做得很好,但在数据分析和建模⽅⾯就差⼀些。pandas帮助填补了这⼀空⽩,使您能够在Python中执⾏整个数据分析⼯作流程,⽽不必切换到更特定于领域的语⾔,如R。
pandas是 Python 的核⼼数据分析⽀持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。pandas是Python进⾏数据分析的必备⾼级⼯具。
pandas的主要数据结构是 Series(⼀维数据)与 DataFrame (⼆维数据),这两种数据结构⾜以处理⾦融、统计、社会科学、⼯程等领域⾥的⼤多数案例
处理数据⼀般分为⼏个阶段:数据整理与清洗、数据分析与建模、数据可视化与制表,Pandas 是处理数据的理想⼯具。
Pandas的基本数据结构
pandas中有两种常用的基本结构
- Series
一维数组,与Numpy中的一维array类似,二者与Python基本的数据结构List也很相似。Series能保存不同种数据类型,字符串、boolean值、数字等都能保存在Series种。 - DataFrame
二维的表格型数据结构,很多功能与R种的data.frame类似。可以将DataFrame理解为Series的容器。
Pandas库的Series类型
一维Series可以用一维列表初始化
Series生成
默认的情况下,Series的下标都是数字(可以使用额外参数指定),类型是统一的。
a=pd.Series([1,3,5,np.nan,6,5])
print(a)
# 输出为:
0 1.0
1 3.0
2 5.0
3 NaN # ⽆论是numpy中的NAN还是Python中的None在pandas中都以缺失数据NaN对待
4 6.0
5 5.0
dtype: float64 # 左边为索引,右边为各个元素对应的取值;
b=pd.Series([1,3,5,np.nan,6,5],index=['a','b','c','d','e','f']) #index设置索引
print(b)
# 输出为:
a 1.0
b 3.0
c 5.0
d NaN
e 6.0
f 5.0
dtype: float64
Series查看数据
索引——数据行标签:index
取值:values
切片:[开始索引,结尾索引]前闭后开
索引赋值:a.index.name=‘索引’ a.index=list(‘abcdef’)
Pandas库的DataFrame类型
DataFrame初始化
DataFrame是由多种类型的列构成的⼆维标签数据结构,类似于 Excel 、SQL 表,或 Series 对象构成的字典。
# 首先构造一组时间序列,作为第一维的下标
date=pd.date_range('20200101',periods=6)
print(date)
# 输出为:
DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
'2020-01-05', '2020-01-06'],
dtype='datetime64[ns]', freq='D')
# 然后创建一个DataFream结构,不指定任何index参数
df=pd.DataFrame(np.random.randn(6,4))
df # 默认使用0、1、2.。。作为索引index、columns
# 输出为:
0 1 2 3
0 -1.490125 1.298987 -0.543361 1.221980
1 -0.849709 0.118608 -0.955715 0.144980
2 -0.599598 -0.756037 -1.795249 -0.282495
3 -0.332586 1.750622 -1.493345 -2.100013
4 -0.905893 -0.254791 -1.476728 -0.001651
5 -1.121065 -1.861881 -0.502420 0.523135
# index参数设置行索引,columns参数设置列索引
df=pd.DataFrame(np.random.randn(6,4),index=date,columns=list('ABCD'))
df
# 输出为:
A B C D
2020-01-01 0.443978 -0.568280 0.539422 -1.808815
2020-01-02 -0.941946 1.600655 -0.165418 -0.143333
2020-01-03 0.058186 1.299691 -0.722582 -0.258170
2020-01-04 0.912441 -1.347266 -0.827097 -1.189625
2020-01-05 0.427125 0.010411 -0.390411 1.172277
2020-01-06 -0.584286 -0.428119 0.536305 1.327480
# 使用字典传入数据pd.DataFrame({})
df1=pd.DataFrame({
'A':1,'B':pd.Timestamp('20200101'),'C':pd.Series(1,index=list(range(4)),dtype=float),'D':np.array([3]