首页 > 文章列表 > 如何在Python中按列对CSV文件进行排序?

如何在Python中按列对CSV文件进行排序?

Python csv文件 按列排序
427 2023-09-01

在当前的应用和技术领域,数字和数据至关重要,因此 CSV(逗号分隔值)成为存储和操作此类关键数据的首选格式。 CSV 文件经常遇到的一个任务是根据指定列排列数据。本综合指南旨在重点介绍利用 Python 功能在 CSV 文件中按列对齐数据的多种方法。我们的旅程将包含三个关键阶段:吸收 CSV 文件、整理数据和保护结果输出。

Python,凭借其强大的数据操作环境以及诸如pandas和CSV等模块,已成为此类任务的首选工具。在本指南中,这些模块将是我们选择的工具,以实现我们的目标。

这里是修订后的步骤,可以制定成一个算法−

  • 导入必要的模块(pandas 和 csv)。

  • 将CSV文件吸收到DataFrame中。

  • 根据所需的列排列 DataFrame。

  • 可选择将整理后的DataFrame安全地保存为CSV文件。

您需要什么

确保Python已经正确安装并在您的系统上运行。在本指南中,我们将使用Python 3作为我们的Python版本。此外,我们将使用pandas模块,可以使用以下命令进行安装:

pip install pandas
import pandas as pd

# Load the CSV file into a DataFrame
dataframe = pd.read_csv('filename.csv')

# Sort the DataFrame
sorted_dataframe = dataframe.sort_values('column_name')

# Save the sorted DataFrame into a CSV file
sorted_dataframe.to_csv('sorted_filename.csv', index=False)

现在,让我们深入研究其他方法 -

  • 通过 DataFrame.sort_values() 和 DataFrame.groupby() 使用 pandas -

我们首先导入 pandas 库。随后,使用 read_csv 函数将 CSV 文件吸收到 DataFrame 中。然后使用 groupby 函数按特定列对 DataFrame 进行分组,根据指定列中发现的唯一值形成新组。最终,我们使用 sort_values 函数按另一列排列每个组,生成一个新的 DataFrame,其中各组已排序独立。

示例

import pandas as pd

dataframe = pd.read_csv('filename.csv')
sorted_dataframe = dataframe.sort_values(['column_to_group_by', 'column_to_sort_by'])

输出

  column_to_group_by  column_to_sort_by  value
0                  A                  1     10
2                  A                  2     30
4                  A                  3     50
3                  B                  1     40
1                  B                  2     20
5                  B                  3     60

  • 使用DataFrame.sort_index()函数来利用pandas库

导入 pandas 并将 CSV 文件吸收到 DataFrame 中后,我们利用 sort_index 函数根据 DataFrame 的索引来排列 DataFrame。这会产生一个新的 DataFrame,其中的行根据其索引标签进行排序。

示例

import pandas as pd

dataframe = pd.read_csv('filename.csv')
sorted_dataframe = dataframe.sort_index()

输出

    name    age
0   Amy     22
1   Bob     24
2   John    23
3   Alice   25
  • 使用带有key参数的sorted()函数−

我们首先导入pandas并将CSV文件加载到DataFrame中。然后,我们使用Python内置的sorted函数对DataFrame进行排序。key参数用于指定一个从DataFrame中每个元素提取比较键的函数(在这个例子中,是一个特定的列)。

示例

import pandas as pd

dataframe = pd.read_csv('filename.csv')
list_of_dicts = dataframe.to_dict('records')
sorted_list_of_dicts = sorted(list_of_dicts, key=lambda x: x['column_to_sort_by'])
sorted_dataframe = pd.DataFrame(sorted_list_of_dicts)

Given a DataFrame created from the following data:

dataframe = pd.DataFrame({
   'name': ['John', 'Alice', 'Bob', 'Amy'],
   'age': [23, 25, 24, 22]
})

如果您使用“age”作为“column_to_sort_by”,则排序后的 DataFrame 将是 -

输出

   name  age
3   Amy   22
0  John   23
2   Bob   24
1 Alice   25
  • 使用DataFrame.sort_values()和inplace=True来利用pandas −

    • 一如既往,我们首先导入pandas并将CSV文件读取为一个DataFrame。随后,我们使用sort_values函数根据特定列对DataFrame进行排序。inplace=True参数表示排序应该在原始DataFrame上进行,而不是生成一个新的排序后的DataFrame。

      示例

      import pandas as pd
      
      dataframe = pd.read_csv('filename.csv')
      dataframe.sort_values('age', inplace=True)
      

      输出

         name  age
      1   Amy   22
      0  John   23
      3   Bob   24
      2 Alice   25
      

      • Iris数据集:https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data

      • 葡萄酒质量数据集:https://archive.ics.uci.edu/ml/machine-learning-databases/winequality/winequality-white.csv

      结论

      总而言之,Python 凭借 pandas 等强大的模块,提供了一种高效且通用的方法来对 CSV 文件中的数据进行排序,满足不同的数据操作要求。这种探索仅触及了 Python 处理 CSV 数据功能的表面。通过进一步深入了解 Python 的数据管理技术,人们可以发现多种有效操作数据的策略,从而在各种以数据为中心的应用程序中获得更深入的见解和更简化的处理。