Python Pandas之迭代和排序
Pandas
对象之间的基本迭代的行为取决于类型。当迭代一个系列时,它被视为数组式,基本迭代产生这些值。其他数据结构,如:DataFrame
和Panel
,遵循类似惯例迭代对象的键。 简而言之,基本迭代(对于i
在对象中)产生 -
- Series - 值
- DataFrame - 列标签
- Pannel - 项目标签
迭代DataFrame
迭代DataFrame
提供列名 要遍历数据帧(DataFrame)中的行,可以使用以下函数 -
iteritems()
- 迭代(key,value)
对iterrows()
- 将行迭代为(索引,系列)对itertuples()
- 以namedtuples
的形式迭代行
iteritems() 将每个列作为键,将值与值作为键和列值迭代为Series对象。 iterrows() iterrows()
返回迭代器,产生每个索引值以及包含每行数据的序列 itertuples() itertuples()
方法将为DataFrame
中的每一行返回一个产生一个命名元组的迭代器。元组的第一个元素将是行的相应索引值,而剩余的值是行值。
Pandas 排序
_Pandas_有两种排序方式,它们分别是 -
- 按标签
- 按实际值
按标签排序
使用sort_index()
方法,通过传递axis
参数和排序顺序,可以对DataFrame
进行排序。 默认情况下,按照升序对行标签进行排序
排序顺序
通过将布尔值传递给升序参数,可以控制排序顺序。 来看看下面的例子来理解一下。
按列排列
通过传递axis
参数值为0
或1
,可以对列标签进行排序。 默认情况下,axis = 0
,逐行排列。来看看下面的例子来理解这个概念。
按值排序
像索引排序一样,sort_values()
是按值排序的方法。它接受一个by
参数,它将使用要与其排序值的DataFrame
的列名称。
排序算法
sort_values()
提供了从mergeesort
,heapsort
和quicksort
中选择算法的一个配置。Mergesort
是唯一稳定的算法。
代码举例:
import pandas as pd
import numpy as np
N = 20
df = pd.DataFrame({
‘A’: pd.date_range(start=‘2016-01-01’, periods=N, freq=‘D’),
‘x’: np.linspace(0, stop=N - 1, num=N),
‘y’: np.random.rand(N),
‘C’: np.random.choice([‘Low’, ‘Medium’, ‘High’], N).tolist(),
‘D’: np.random.normal(100, 10, size=(N)).tolist()
})
for col in df:
print(col)
df = pd.DataFrame(np.random.randn(4, 3), columns=[‘col1’, ‘col2’, ‘col3’])
for key, value in df.iteritems(): # 迭代(key,value)对
print(key, value)
for row_index, row in df.iterrows(): # 将行迭代为(索引,系列)对
print(row_index, row)
for row in df.itertuples(): # 以namedtuples的形式迭代行
print(row)
print(“---------------------------------------------------------”)
unsorted_df = pd.DataFrame(np.random.randn(10, 2), index=[1, 4, 6, 2, 3, 5, 9, 8, 0, 7], columns=[‘col2’, ‘col1’])
sorted_df = unsorted_df.sort_index()
print(sorted_df)
print(unsorted_df.sort_index()) # 按标签排序
print(unsorted_df.sort_index(ascending=False)) # 按标签排序
print(unsorted_df.sort_index(axis=1))
print(unsorted_df.sort_values(by=‘col1’)) # 按值排序
print(unsorted_df.sort_values(by=[‘col1’, ‘col2’]))
print(unsorted_df.sort_values(by=‘col1’, kind=‘mergesort’)) # mergeesort,heapsort和quicksort 其中Mergesort 是唯一稳定的