09 pandas DataFrame - 排序、排名、时间序列

简介: === 排序 ===原数据:data1 = pd.DataFrame(np.random.randint(0,9,[5,5]), index=list('abcde'), ...

=== 排序 ===

原数据:

data1 = pd.DataFrame(np.random.randint(0,9,[5,5]),
                     index=list('abcde'),
                     columns=list('ABCDE'))

1、索引排序 sort_index

ascending默认True 升序
axis默认0 行索引

data1.sort_index(ascending=False,axis=1)
img_916b40a02087de93da48e502025d725c.png

2、值排序 sort_values

sort_values 默认列排序
data1.sort_values('E')
img_ebfb9b826480f76a5f91daf98182e617.png
sort_values 行排序
data1.T.sort_values(by='a').T
img_5c58a49b32279feb0147013e6c73d8e5.png
下面行排序的写法始终报错,不知为何
data1.sort_values(by='a',axis=1,ascending=False)

ValueError: When sorting by column, axis must be 0 (rows)

3、所有行或列排序

data1.apply(np.sort,axis = 1) 
img_b3386138affb61876e7bc9cb22f92ac8.png
image.png

=== 排名 ===

场景:数据的位置还是原来的位置(不排序),但我想知道是第几名

原数据:

ser1 = pd.Series([3,1,5,2,5],index=list('abcde'))
ser1
a    3
b    1
c    5
d    2
e    5
dtype: int64

排名 rank

参数 method 默认='average' max、min 共用最大最小;first 第一次出现的排名靠前

ser1.rank(method='first')
a    3.0
b    1.0
c    4.0
d    2.0
e    5.0
dtype: float64

=== 时间序列 ===

1、 创建苹果12个月的股票值

apple_share = pd.Series(np.random.randint(1000,3400,12))
apple_share
0     1509
1     2806
2     1030
3     1084
4     3023
5     3098
6     3289
7     3003
8     1544
9     2442
10    1226
11    1767
dtype: int32

2、 生成时间序列

默认以天生成
以月份来生成 freq='M' 天=D
如果不确定结束时间,可以制定生成多少个 periods

apple_index = pd.date_range(start='20170101',periods=12,freq="M")
apple_index = pd.date_range(start='20170101',end='20171231',freq="M")
apple_index
DatetimeIndex(['2017-01-31', '2017-02-28', '2017-03-31', '2017-04-30',
               '2017-05-31', '2017-06-30', '2017-07-31', '2017-08-31',
               '2017-09-30', '2017-10-31', '2017-11-30', '2017-12-31'],
              dtype='datetime64[ns]', freq='M')

3、 创建苹果股票的日期序列

apple_share.index = apple_index
apple_share
2017-01-31    1509
2017-02-28    2806
2017-03-31    1030
2017-04-30    1084
2017-05-31    3023
2017-06-30    3098
2017-07-31    3289
2017-08-31    3003
2017-09-30    1544
2017-10-31    2442
2017-11-30    1226
2017-12-31    1767
Freq: M, dtype: int32
相关文章
|
1月前
|
数据挖掘 Python
Pandas时间序列处理:日期与时间
本文介绍Pandas在处理时间序列数据时的基础概念、常见问题及解决方案。涵盖时间戳、时间间隔和周期等概念,详细讲解日期格式转换、缺失值处理、时间间隔计算和重采样等操作,并通过代码示例说明如何解决`ParserError`和`OutOfBoundsDatetime`等常见报错。掌握这些知识有助于高效处理时间序列数据,提高数据分析的质量和效率。
146 75
|
1月前
|
数据采集 存储 数据处理
Pandas数据应用:时间序列预测
本文介绍了使用 Pandas 进行时间序列预测的方法,涵盖时间序列的基础概念、特征(如趋势、季节性等),以及数据处理技巧(如创建时间序列、缺失值处理和平滑处理)。同时,文章详细讲解了简单线性回归和 ARIMA 模型的预测方法,并针对常见问题(如数据频率不一致、季节性成分未处理)及报错提供了解决方案。通过这些内容,读者可以掌握时间序列预测的基本步骤和技巧。
64 27
|
2月前
|
存储 数据挖掘 数据处理
掌握Pandas核心数据结构:Series与DataFrame的四种创建方式
本文介绍了 Pandas 库中核心数据结构 Series 和 DataFrame 的四种创建方法,包括从列表、字典、标量和 NumPy 数组创建 Series,以及从字典、列表的列表、NumPy 数组和 Series 字典创建 DataFrame,通过示例详细说明了每种创建方式的具体应用。
216 67
|
2月前
|
算法 数据挖掘 索引
Pandas数据排序:单列与多列排序详解
本文介绍了Pandas库中单列和多列排序的方法及常见问题的解决方案。单列排序使用`sort_values()`方法,支持升序和降序排列,并解决了忽略大小写、处理缺失值和索引混乱等问题。多列排序同样使用`sort_values()`,可指定不同列的不同排序方向,解决列名错误和性能优化等问题。掌握这些技巧能提高数据分析效率。
88 9
|
2月前
|
存储 数据挖掘 索引
Pandas数据结构:Series与DataFrame
本文介绍了 Python 的 Pandas 库中两种主要数据结构 `Series` 和 ``DataFrame`,从基础概念入手,详细讲解了它们的创建、常见问题及解决方案,包括数据缺失处理、数据类型转换、重复数据删除、数据筛选、排序、聚合和合并等操作。同时,还提供了常见报错及解决方法,帮助读者更好地理解和使用 Pandas 进行数据分析。
178 10
|
2月前
|
存储 数据挖掘 索引
Pandas Series 和 DataFrame 常用属性详解及实例
Pandas 是 Python 数据分析的重要工具,其核心数据结构 Series 和 DataFrame 广泛应用。本文详细介绍了这两种结构的常用属性,如 `index`、`values`、`dtype` 等,并通过具体示例帮助读者更好地理解和使用这些属性,提升数据分析效率。
68 4
|
3月前
|
SQL 数据采集 数据可视化
Pandas 数据结构 - DataFrame
10月更文挑战第26天
81 2
Pandas 数据结构 - DataFrame
|
3月前
|
索引 Python
Pandas 常用函数-数据排序
10月更文挑战第28天
34 1
|
5月前
|
数据挖掘 数据处理 Python
​掌握Pandas中的rolling窗口,轻松处理时间序列数据
​掌握Pandas中的rolling窗口,轻松处理时间序列数据
268 1
|
5月前
|
数据挖掘 数据处理 Python
Pandas中groupby后的数据排序技巧
Pandas中groupby后的数据排序技巧
336 0