重置索引
重置索引(reindex)可以更改原 DataFrame 的行标签或列标签,并使更改后的行、列标签与 DataFrame 中的数据逐一匹配。通过重置索引操作,您可以完成对现有数据的重新排序。如果重置的索引标签在原 DataFrame 中不存在,那么该标签对应的元素值将全部填充为 NaN
reindex
-
-
-
-
- reindex() 方法用于重新索引 DataFrame 或 Series 对象。重新索引意味着根据新的索引标签重新排列数据,并填充缺失值。如果重置的索引标签在原 DataFrame 中不存在,那么该标签对应的元素值将全部填充为 NaN。
- DataFrame.reindex(labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=np.nan, limit=None, tolerance=None)
- labels:
- - 类型:数组或列表,默认为 None。
- - 描述:新的索引标签。
- index:
- - 类型:数组或列表,默认为 None。
- - 描述:新的行索引标签。
- columns:
- - 类型:数组或列表,默认为 None。
- - 描述:新的列索引标签。
- axis:
- - 类型:整数或字符串,默认为 None。
- - 描述:指定重新索引的轴。0 或'index'表示行,1或'columns'表示列。
- method:
- -类型:字符串,默认为None。
- -描述:用于填充缺失值的方法。可选值包括'ffill'(前向填充)、'bfill'(后向填充)等。
- copy:
- -类型:布尔值,默认为True。
- -描述:是否返回新的DataFrame或Series。
- level:
- -类型:整数或级别名称,默认为None。
- -描述:用于多级索引(MultiIndex),指定要重新索引的级别。
- fill_value:
- -类型:标量,默认为np.nan。
- -描述:用于填充缺失值的值。
- limit:
- -类型:整数,默认为None。
- -描述:指定连续填充的最大数量。
- tolerance:
- -类型:标量或字典,默认为None。
- -描述:指定重新索引时的容差。
- labels:
-
-
-
reindex_like
-
-
-
-
- reindex_like方法用于将一个DataFrame或Series的索引重新排列,使其与另一个DataFrame或Series的索引相匹配。如果在重新索引的过程中,新的索引与原始索引不完全匹配,那么不匹配的位置将会被填充为NaN值。
- DataFrame.reindex_like(other,method=None,copy=True,limit=None,tolerance=None)
- 1.other:
- -类型:DataFrame或Series。
- -描述:用于对齐索引和列的参考对象。
- 2.method:
- -类型:字符串,默认为None。
- -描述:用于填充缺失值的方法。可选值包括'ffill'(前向填充)、'bfill'(后向填充)等。
- 3.copy:
- -类型:布尔值,默认为True。
- -描述:是否返回新的DataFrame或Series。
- 4.limit:
- -类型:整数,默认为None。
- -描述:指定连续填充的最大数量。
- 5.tolerance:
- -类型:标量或字典,默认为None。
- -描述:指定重新索引时的容差。
- 1.other:
- DataFrame.reindex_like(other,method=None,copy=True,limit=None,tolerance=None)
- reindex_like方法用于将一个DataFrame或Series的索引重新排列,使其与另一个DataFrame或Series的索引相匹配。如果在重新索引的过程中,新的索引与原始索引不完全匹配,那么不匹配的位置将会被填充为NaN值。
-
-
-
遍历
Series遍历
-
-
-
-
- 使用items()
- importpandasaspd#创建一个示例Seriesseries=pd.Series([1,2,3],index=['a','b','c'])forindex,valueinseries.items():print(f"Index:{index},Value:{value}")
- **使用index属性**
- importpandasaspd#创建一个示例Seriesseries=pd.Series([1,2,3],index=['a','b','c'])#遍历索引forindexinseries.index:print(f"Index:{index},Value:{series[index]}")
- **使用values属性**
- importpandasaspd#创建一个示例Seriesseries=pd.Series([1,2,3],index=['a','b','c'])#遍历值forvalueinseries.values:print(f"Value:{value}")
- 使用items()
-
-
-
DataFrame遍历
-
-
-
-
- 迭代器返回的是原数据的副本
- **遍历行**
- iterrows()方法用于遍历DataFrame的行,返回一个包含索引和行的迭代器。
- 当处理大型数据集时,应尽量避免使用iterrows(),因为它的性能相对较差。
- itertuples()方法用于遍历DataFrame的行,返回一个包含行数据的命名元组。
- itertuples()是遍历DataFrame的推荐方法,因为它在速度和内存使用上都更高效。
- iterrows()方法用于遍历DataFrame的行,返回一个包含索引和行的迭代器。
- **遍历列**
- items()方法用于遍历DataFrame的列,返回一个包含列名和列数据的迭代器。
- **使用属性遍历**
- loc和iloc方法可以用于按索引或位置遍历DataFrame的行和列。
-
-
-
排序
sort_index
-
-
-
-
- sort_index方法用于对DataFrame或Series的索引进行排序。
- DataFrame.sort_index(axis=0,ascending=True,inplace=False)Series.sort_index(axis=0,ascending=True,inplace=False)
- -axis:指定要排序的轴。默认为0,表示按行索引排序。如果设置为1,将按列索引排序。
- -ascending:布尔值,指定是升序排序(True)还是降序排序(False)。
- -inplace:布尔值,指定是否在原地修改数据。如果为True,则会修改原始数据;如果为False,则返回一个新的排序后的对象。
-
-
-
sort_values
-
-
-
-
- sort_values方法用于根据一个或多个列的值对DataFrame进行排序。
- DataFrame.sort_values(by,axis=0,ascending=True,inplace=False,kind='quicksort',na_position='last')
- -by:列的标签或列的标签列表。指定要排序的列。
- axis:指定沿着哪个轴排序。默认为0,表示按列排序(行间排序)。如果设置为1,将按行排序(列间排序)。
- -ascending:布尔值或布尔值列表,指定是升序排序(True)还是降序排序(False)。可以为每个列指定不同的排序方向。
- -inplace:布尔值,指定是否在原地修改数据。如果为True,则会修改原始数据;如果为False,则返回一个新的排序后的对象。
- -kind:排序算法。默认为'quicksort',也可以选择'mergesort'或'heapsort'。
- -na_position:指定缺失值(NaN)的位置。可以是'first'或'last'。
-
-
-
去重
drop_duplicates方法用于删除DataFrame或Series中的重复行或元素。
drop_duplicates(by=None,subset=None,keep='first',inplace=False)Series.drop_duplicates(keep='first',inplace=False)
-
-
-
-
- -**by**:用于标识重复项的列名或列名列表。如果未指定,则使用所有列。
- -subset:与by类似,但用于指定列的子集。
- -**keep**:指定如何处理重复项。可以是:
- -'first':保留第一个出现的重复项(默认值)。
- -'last':保留最后一个出现的重复项。
- -False:删除所有重复项。
- -inplace:布尔值,指定是否在原地修改数据。如果为True,则会修改原始数据;如果为False,则返回一个新的删除重复项后的对象。
- **案例
-
-
-
分组
groupby
-
-
-
-
- groupby方法用于对数据进行分组操作,这是数据分析中非常常见的一个步骤。通过groupby,你可以将数据集按照某个列(或多个列)的值分组,然后对每个组应用聚合函数,比如求和、平均值、最大值等。
- DataFrame.groupby(by,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,observed=False,**kwargs)
- -by:用于分组的列名或列名列表。
- -axis:指定沿着哪个轴进行分组。默认为0,表示按行分组。
- -level:用于分组的MultiIndex的级别。
- -as_index:布尔值,指定分组后索引是否保留。如果为True,则分组列将成为结果的索引;如果为False,则返回一个列包含分组信息的DataFrame。
- -sort:布尔值,指定在分组操作中是否对数据进行排序。默认为True。
- -group_keys:布尔值,指定是否在结果中添加组键。
- -squeeze:布尔值,如果为True,并且分组结果返回一个元素,则返回该元素而不是单列DataFrame。
- -observed:布尔值,如果为True,则只考虑数据中出现的标签。
-
-
-
filter
-
-
-
-
- 通过filter()函数可以实现数据的筛选,该函数根据定义的条件过滤数据并返回一个新的数据集
-
-
-
合并
merge函数用于将两个DataFrame对象根据一个或多个键进行合并,类似于SQL中的JOIN操作。这个方法非常适合用来基于某些共同字段将不同数据源的数据组合在一起,最后拼接成一个新的DataFrame数据表。
pandas.merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=False,suffixes=('_x','_y'),copy=True,indicator=False,validate=None)
-
-
-
-
- -left:左侧的DataFrame对象。
- -right:右侧的DataFrame对象。
- -how
- :合并方式,可以是'inner'、'outer'、'left'或'right'。默认为'inner'。
- -'inner':内连接,返回两个DataFrame共有的键。
- -'outer':外连接,返回两个DataFrame的所有键。
- -'left':左连接,返回左侧DataFrame的所有键,以及右侧DataFrame匹配的键。
- -'right':右连接,返回右侧DataFrame的所有键,以及左侧DataFrame匹配的键。
- -on:用于连接的列名。如果未指定,则使用两个DataFrame中相同的列名。
- -left_on和right_on:分别指定左侧和右侧DataFrame的连接列名。
- -left_index和right_index:布尔值,指定是否使用索引作为连接键。
- -sort:布尔值,指定是否在合并后对结果进行排序。
- -suffixes:一个元组,指定当列名冲突时,右侧和左侧DataFrame的后缀。
- -copy:布尔值,指定是否返回一个新的DataFrame。如果为False,则可能修改原始DataFrame。
- -indicator:布尔值,如果为True,则在结果中添加一个名为__merge的列,指示每行是如何合并的。
- -validate:验证合并是否符合特定的模式。
-
-
-
时间
datetime
-
-
-
-
- datetime模块提供了用于处理日期和时间的类。
- fromdatetimeimportdatetimedt=datetime(2024,5,19,16,45,30)
-
-
-
Timestamp
-
-
-
-
- Timestamp是一个特殊的datetime类型,用于表示单个时间点。它是pandas时间序列功能的核心组件,提供了丰富的方法和属性来处理日期和时间数据。
- importpandasaspd#从日期字符串创建ts=pd.Timestamp('2024-05-1916:45:00')print(ts)#从时间戳创建ts=pd.Timestamp(1652937700)#Unix时间戳print(ts)
- Timestamp是一个特殊的datetime类型,用于表示单个时间点。它是pandas时间序列功能的核心组件,提供了丰富的方法和属性来处理日期和时间数据。
-
-
-
日期解析
-
-
-
-
- pd.to_datetime()方法用于将字符串或其他格式的日期转换为Pandas的Datetime对象。
- importpandasaspd#将字符串转换为Datetime对象date_str='2023-10-01'date_obj=pd.to_datetime(date_str)print(date_obj)#获取当前时间print('当前时间:')print(datetime.now())
- pd.to_datetime()方法用于将字符串或其他格式的日期转换为Pandas的Datetime对象。
-
-
-
date_range
-
-
-
-
- date_range()函数用于生成一个固定频率的日期时间索引(DatetimeIndex)。这个函数非常灵活,可以用于生成各种时间序列数据。
- pandas.date_range(start=None,end=None,periods=None,freq=None,tz=None,normalize=False,name=None,closed=None,**kwargs)
- 1.start:
- -类型:字符串或日期时间对象,默认为None。
- -描述:起始日期时间。
- 2.end:
- -类型:字符串或日期时间对象,默认为None。
- -描述:结束日期时间。
- 3.periods:
- -类型:整数,默认为None。
- -描述:生成的日期时间索引的数量。
- 4.freq:
- -类型:字符串或日期偏移对象,默认为None。
- -描述:时间频率。常见的频率包括'D'(天)、'H'(小时)、'T'或'min'(分钟)、'S'(秒)等。
- 5.tz:
- -类型:字符串或时区对象,默认为None。
- -描述:指定时区。
- 6.normalize:
- -类型:布尔值,默认为False。
- -描述:是否将时间归一化到午夜。
- 7.name:
- -类型:字符串,默认为None。
- -描述:生成的日期时间索引的名称。
- 8.closed:
- -类型:字符串,默认为None。
- -描述:指定区间是否包含起始或结束日期时间。可选值为'left'、'right'或None。
- 1.start:
-
-
-