pandas排序与统计

本文介绍了pandas库在Python数据分析中的排序和统计方法,包括对行或列索引的排序,Series和DataFrame的值排序,间接统计,累积型统计,针对列的汇总统计,相关系数和协方差计算,以及唯一值、值计数和成员资格检查等关键操作。

《Python for Data Analysis》

排序

sort_index()

对行或列索引进行排序

In [1]: import pandas as pd

In [2]: from pandas import DataFrame, Series

In [3]: obj = Series(range(4), index=['d','a','b','c'])

In [4]: obj
Out[4]:
d    0
a    1
b    2
c    3
dtype: int64

In [5]: obj.sort_index()
Out[5]:
a    1
b    2
c    3
d    0
dtype: int64

In [6]: import numpy as np

In [8]: frame = DataFrame(np.arange(8).reshape((2,4)), index=['three','one'],
   ...:                   columns=['d','a','b','c'])

In [9]: frame
Out[9]:
       d  a  b  c
three  0  1  2  3
one    4  5  6  7

In [10]: frame.sort_index()
Out[10]:
       d  a  b  c
one    4  5  6  7
three  0  1  2  3

In [11]: frame.sort_index(axis=1)
Out[11]:
       a  b  c  d
three  1  2  3  0
one    5  6  7  4

In [12]: frame.sort_index(axis=1, ascending=False)
Out[12]:
       d  c  b  a
three  0  3  2  1
one    4  7  6  5
sort_values

对Series按进行排序, 排序时,任何缺失值默认都会被放到Series的末尾。

In [18]: obj = Series([4, np.nan, 6, np.nan, -3, 2])

In [19]: obj
Out[19]:
0    4.0
1    NaN
2    6.0
3    NaN
4   -3.0
5    2.0
dtype: float64

In [21]: obj.sort_values()
Out[21]:
4   -3.0
5    2.0
0    4.0
2    6.0
1    NaN
3    NaN
dtype: float64

在DataFrame上,根据一个或多个列中的值进行排序。将一个或多个列的名字传递给by选项即可达到该目的:

In [16]: frame.sort_values(by='b')
Out[16]:
       d  a  b  c
three  0  1  2  3
one    4  5  6  7

汇总和统计

summeanmax

约简方法的选项

选项说明
axis约简的轴。DataFrame的行用0,列用1
skipna排除缺失值,默认值为True
level如果轴是层次化索引的(MiltiIndex),根据level分组约简。

间接统计

idxmin, idxmax:达到最小值或最大值的索引。

累积型

cumsum

针对列进行汇总统计

df.describe:数值型和非数值型不同。

相关系数和协方差

corr(): 相关系数

cov():协方差

唯一值、值计数以及成员资格

unique:可以得到Series中的唯一值数组。

isin:用于判断矢量化集合的成员资格

value_counts:用于计算一个Series中各值出现的概率。

### 使用 Pandas 进行数据统计排序的方法 #### 数据统计方法 Pandas 提供了多种内置函数来完成数据统计操作。以下是常用的统计数据计算方式: - **描述性统计** 可以使用 `describe()` 函数快速获取数值型列的主要统计指标,如均值、标准差、最小值、最大值等[^1]。 ```python import pandas as pd data = {'A': [1, 2, 3, 4, 5], 'B': [10, 20, 30, 40, 50]} df = pd.DataFrame(data) stats_summary = df.describe() ``` - **求和 (`sum`)** 计算某一列或多列的总和。 ```python total_sum_A = df['A'].sum() # 单列求和 total_sum_all = df.sum(axis=0) # 所有列分别求和 ``` - **平均值 (`mean`)** 计算某列或整个 DataFrame 的平均值。 ```python mean_value_B = df['B'].mean() # 列 B 平均值 overall_mean = df.mean(axis=0) # 各列平均值 ``` - **计数 (`count`) 和唯一值数量 (`nunique`)** 统计非空值的数量以及每列中的唯一值数目。 ```python non_null_count = df.count() # 非空值计数 unique_values_in_A = df['A'].nunique() # A 列中不同值的数量 ``` --- #### 数据排序方法 Pandas 支持基于单列或多列的数据排序功能。 - **按单一列排序** 使用 `sort_values` 方法可以按照指定列进行升序或降序排列,默认为升序。 ```python sorted_df_single_column = df.sort_values(by='A', ascending=True) # 按照列 A 升序排序 ``` - **按多列排序** 当需要依据多个字段联合排序时,可以通过传递列表形式的参数实现。 ```python multi_sorted_df = df.sort_values(by=['A', 'B'], ascending=[True, False]) # 先按 A 升序再按 B 降序 ``` - **索引排序** 如果希望根据索引来调整顺序,则可调用 `sort_index` 方法。 ```python index_sorted_df = df.sort_index(ascending=False) # 按索引倒序排列 ``` --- #### 实际案例演示 假设有一个 Excel 文件名为 `data.xlsx`,其中包含两列分别为成绩(`score`)和姓名(`name`),下面展示如何加载该文件并执行基本统计排序操作。 ```python import pandas as pd # 加载Excel文件到DataFrame对象 df_excel = pd.read_excel('data.xlsx') # 查看前几条记录确认读取成功否 print(df_excel.head()) # 做一些简单的统计分析 summary_statistics = df_excel.describe() # 对分数(score)这一栏做降序排序 sorted_by_score_descending = df_excel.sort_values(by='score', ascending=False) # 输出结果至新的CSV文档保存下来以便后续查看 sorted_by_score_descending.to_csv('sorted_results.csv', index=False) ``` 以上代码片段展示了从导入外部表格资料开始直到最后导出经过处理后的版本结束的整体流程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值