pandas 字符串切片后保存_pandas-方便的数据分析库

本文详细介绍了Pandas中的数据对象,包括Series和DataFrame。重点讲述了如何使用下标存取元素,如切片、布尔索引、loc[]、iloc[]等,并探讨了文件输入输出、数值运算和分组运算。特别地,分组运算通过groupby()方法实现,支持聚合、apply()和transform()等操作,可用于复杂的数据分析任务。
摘要由CSDN通过智能技术生成

1 Pandas中的数据对象

Series和 DataFrame是 Pandas中最常用的两个对象。

  • Series 对象

Series是Pandas中最基本的对象,它定义了 NumPy的 ndarray对象的接口_ array_(),因此 可以用NumPy的数组处理函数直接对Series对象进行处理。Series对象除了支持使用位置作为 下标存取元素之外,还可以使用索引标签作为下标存取元素,这个功能与字典类似。每个Series 对象实际上都由两个数组组成:

index: 它是从ndarray数组继承的Index索引对象,保存标签信息。若创建Series对象时不指定index, 将自动创建一个表示位置下标的索引。
values: 保存元素值的ndarry数组,NumPy的函数都对此数组进行处理。
import pandas as pd
s=pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
print('索引',s.index)
print('值',s.values)


索引 Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
值 [1 2 3 4 5]

Series对象的下标运算同时支持位置和标签两种形式:

print('位置下标s[2]:',s[2])
print('标签下标s["d"]:',s['d'])

Series对象还支持位置切片和标签切片。位置切片遵循Python的切片规则,包括起始位置, 但不包括结束位置;但标签切片则同时包括起始标签和结束标签。

print(s[1:3])
print(s['b':'d'])


b    2
c    3
dtype: int64
b    2
c    3
d    4
dtype: int64

和 ndarray数组一样,还可以使用位置列表或位置数组存取元素,冋样也可以使用标签列表和标签数组。

print(s[[1, 3, 2]])
print(s[['b', 'd', 'c']])


b    2
d    4
c    3
dtype: int64
b    2
d    4
c    3
dtype: int64

Series对象同时具有数组和字典的功能 ,因此它也支持字典的一些方法 ,例如 Series.iteritems():

list(s.iteritems())

当两个Series对象进行操作符运算时,Pandas会按照标签对齐元素,也就是说运算操作符会对标签相同的两个元素进行计算。在下面的例子中,s 中标签为b的元素和s2 中标签为b的 元素相加得到结果中的22。当某一方的标签不存在时,默认以NaN(Not a Number)填充。由于 NaN是浮点数中的一个特殊值,因此输出的Series对象的元素类型被转换为float64。

s2 = pd.Series([20,30,40,50,60], index=['b','c','d','e','f'] )
print(s+s2)
  • DataFrame 对象

DataFrame的各个组成元素

33ccb116b91fd4f47b847d4bb2ff5822.png
df_soil = pd.read_csv("data/Soils-simple.csv " , index_col=[0,1],parse_dates=["Date"])
df soil.columns.name = "Measures"
parse_dates=["Date"])

dtypes 属性可以获得表示各个列类型的Series对象

print(df_ soil.dtypes)

与数组类似,通过shape属性可以得到DataFrame的行数和列数:

print(df_soil.shape)

DataFmme对象拥有行索引和列索引, 可以通过索引标签对其中的数据进行存取。index属性保存行索引,而columns属性保存列索引。在木例中列索引是一个Index对象,索引对象的名 称可以通过其name厲性存取:

print(df_soil.columns)
print(df_soil.columns.name)

行索引是一个表示多级索引的Multiindex对象,每级的索引名可以通过names属性存取:

print(df_soil.index)
print(df_soil.index.names)

与二维数组相同,DataFrame对象也有两个轴,它的第0 轴为纵轴,第 1轴为横轴。当某个方法或函数有axis、orient等参数时,该参数可以使用整数0 和 1或者index和columns来表 示纵轴方向和横轴方向。

[]运算符可以通过列索引标签获取指定的列,当下标是单个标签时,所得到的是Series对象, 例如df_soill["pH'],而当下标是列表时,则得到一个新的DataFmme对象,例如df_soil[["Densn","Ca]]:

print(df_soil["pH"])
print(df_soil[["Dens","Ca"]])
  • 将内存中的数据转换为DataFrame对象
调用DataFrame()可以将多种格式的数据转换成DataFrame对象,它的三个参数data、 index 和 columns分别为数据、行索引和列索引。
data参数可以是: 二维数组或者能转换为二维数组的嵌套列表。 字典 :字典中的每对“键-值”将成为DataFrame对象的列。值可以是一维数组、列表或 Series对象。
df1=pd.DataFrame(np.random.randint(0,10,(4,2)),index=['A','B','C','D'],columns=['a','b'])

df2=pd.DataFrame({'a':[1,2,3,4],'b':[5,6,7,8]},index=['A','B','C','D'])
  • 常用函数参数

c0a13b3b7ad48fed7eb8e3193709a60b.png

2 下标存取

Series和DataFrame提供了丰富的下标存取方法,除了直接使用[]运算符之外,还可以使 用.loc[]、.iloc[]、.at[]、.i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值