Python3学习之Pandas
- 安装pandas
- 使用pip命令:
- pip install pandas
进入正文:
import pandas as pd
Series模块
-
通过pandas中的Series模块来创建pandas实例对象
Series的数据可以不同类型,Series有索引列,可以给数据列取名字,ndarray必须同一种类型,ndarray只能有默认索引
ser_obj = pd.Series(可迭代对象)-
通过list构建Series
ser_obj = pd.Series([1,2,3,4])将会生成一个有行索引(0,1,2,3)的‘一维’序列
生成的序列为可迭代对象,可用for循环遍历。
生成的序列可用list()方法转换为列表。 -
通过dict构建Series
dict3 = {'y01' : 17.7,'y02' : 20.1 ,'y 03' : 16.5}
ser_obj3 = pd.Series(dict3)
3.可以在构建Series时指定索引,注意index
-
位置索引(数字表示)
-
ser_obj = pd.Series(rang(10,20),index=(1,11))- 在Series中添加关键字index=(1,11),指定序列的索引从1开始10结束。
-
ser_obj.index = range(10,20)- Series对象中拥有index属性,可以通过这一属性来查询对象的索引,返回的是pandas中的indexes类型。还可以通过直接给Series的index属性直接赋值来改变index索引。
-
-
标签索引
ser_obj = pd.Series(range(21,31),index=list('abcdefghij'))- 标签索引指除数字外的不可变数据类型。
- 不可变的数据类型有:
- object 字符串
- int 整形
- float 浮点型
- str 字符串
- datatime 时间类型
- tuple 元组
- bool 布尔型
- 不可变的数据类型有:
- 标签索引指除数字外的不可变数据类型。
-
Series对象的其他属性:
- Series.values #返回Series的值
- Series.head(n) #查看前n条数据,默认为n=5
- Series.tail() #查看后n条数据,默认为n=5
- Series.dtype #返回Series的数据类型
- Series.ndim #返回Series的维度
- Series.shape #返回元组(),获取矩阵的形状
- Series.name #通过name属性设置矩阵name
-
DataFrame模块
DataFrame类型数据与Excel表及其类似,可以理解为多维的Excel表。
DateFrame拥有与Series的属性
-
通过ndarray构建DataFrame
arr = np.random.rand(5,4) df_obj = pd.DataFrame(arr) -
通过多维数据构建DataFrame
df = pd.DataFrame([['A','B',"C"],["D","E","F"],["H","i","j"]]) -
通过Series构建DataFrame
s= pd.Series(np.random.randn(5),name='temp',index=list("ABCDE"))
–
Series中可以使用concat方法在生成的列表中添加数据
df_5 = pd.DataFrame()
print(pd.concat([df_5,s]),axis=0,sort=False))
# 两个序列拼接 axis(轴向) Default = 0
s2 = pd.Series(np.random.randn(5),name='xxx',index= list("ABCDE"))
df_6 = pd.concat([s,s2],axis=1)
–
##Pandas中数据的访问以及增删改查
首先我们定义一个Pandas数据:
dict_data = {'A':1.,
'B':pd.Timestamp("20161217"),
'C':pd.Series(1,index=list(range(1,5)),dtype='float32'),
'D':np.array([3]*4,dtype='int32'),
'E':pd.Categorical(['Python','Java','C++','C#']),
'F':'ChinaHadoop'}
df_obj = pd.DataFrame(dict_data)
-
数据的访问
- 访问A列数据
df_obj['A'] - 访问E列数据
df_obj.E
- 访问A列数据
-
增加列
- 新增G列并赋予D每一项+4的值
df_obj['G'] = df_obj.D + 4
- 新增G列并赋予D每一项+4的值
-
删除列
- 删除G列
del(df_obj['G']) - 删除E列
del df_obj.E
- 删除G列
-
改数据
- 修改单个元素
df_obj.iat[0,1] = 100 - 修改整列数据
df_obj.B = 100
- 修改单个元素
由于DataFrame一列数据的dtype都是一样的,如果修改行数据,需要给定一个list来修改行数据,否则列数据的dtype会变为object,且长度需要一样,否则会报错
–
排序
ser = pd.Series(np.random.randint(1,10,10))
Pandas中有位置索引、标签索引和混合索引(前两种重点介绍)
-
Series
ascending为排序的方式true为升序,False为降序 Default = True
-
sort_index
- 对标签索引进行排序
print(ser.sort_index(ascending=False))
- 对标签索引进行排序
-
sort_values
- 对values值进行排序,by中传入排序的columns
print(ser.sort_values((by='A')))
- 对values值进行排序,by中传入排序的columns
-
-
DataFrame
-
由于数组中的行数据dtype不同,pandas不提供对行数据排序的方法
-
sort_index
- 对行标签索引进行排序
df_obj.sort_index(axis = 0)
- 对行标签索引进行排序
-
sort_values
- 对某列的values进行排序,如果给出by 中给出索引的列表,会按照列表次序依次排序
df.sort_values(['A',"B"])
- 对某列的values进行排序,如果给出by 中给出索引的列表,会按照列表次序依次排序
-
数组的切片
获取一行数据 使用loc or iloc
-
loc 标签索引 左闭右闭
- 获取’2019-07-12’这一行
df.loc['2019-07-12']
- 获取’2019-07-12’这一行
-
iloc 位置索引 左闭右开
-
切片
-
关于iloc的切片
df.iloc[:3,1:3]这个切片取的是前三行,1,2列的数据(iloc左闭右开)
-
-
取到A列的倒数第二个值
df[:-2]['A']
使用loc访问DataFrame 中的具体的值
-
loc iloc at iat
- 访问’2019-07-12’行C列的值
- df.loc[‘2019-07-12’,‘C’]
- df.at[‘2019-07-12’,‘C’]
- 访问第1行第2列的值
- df.iloc[1,2]
- df.iat[1,2]
- 访问’2019-07-12’行C列的值
-
bool应用
- 返回A列的bool值,
df.A>0 - 返回A列bool值为True的行
df[df.A>0] - 对整个DataFrame进行筛选,True的留下,不符合的写作NaN
df[df>0] - 利用条件索引的方式,True的位置数据保留,False的位置数据写作NaN
df[df.iloc[0:3] > 0]
- 返回A列的bool值,
-
isin
-
isin只保留了所在的行,不符合的行去掉了 筛选条件是一个Series ,不符合isin条件的行删除,而不是写作NaN
- 添加TAG列
df['TAG'] = list('aabbcc') print(df[df.TAG.isin(['a','c'])]) -
DataFrame的增删改查
- 改
df.iat[0,1] = 100 - 增删查参照Series
- 改
–
持续更新中
本文详细介绍Python数据处理库Pandas的安装及使用,涵盖Series与DataFrame的创建、操作、索引及排序方法,深入讲解数据增删改查技巧,适合初学者快速上手。

640

被折叠的 条评论
为什么被折叠?



