【数据处理】Pandas库:数据赋值与排序

1,405 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

注意:本案例使用 Jupyter Notebook 进行案例演示

1. 赋值与排序

1.1 赋值

  • 注意:在DataFrame赋值中,不可以单独对指定的索引进行赋值。
  • 通常都是整行或整列进行复制操作

对DataFrame当中的close列进行重新赋值为1

# 直接修改原来的值
data['close'] = 1
# 或者
data.close = 1

1.2 排序

排序有两种形式,一种对内容进行排序,一种对索引进行排序 DataFrame:

对内容进行排序的语法格式如下所示:

  • 使用df.sort_values(key=, ascending=)对内容进行排序

    • key:按照哪个键进行排序
    • 单个键或者多个键进行排序,默认升序
    • ascending=False:降序
    • ascending=True:升序

1.2.1 对内容进行排序

步骤1:导入依赖库

导入相关库,读取数据并查看:

import pandas as pd
people = pd.read_csv("data/data140190/人口.csv")
people.head()

运行结果如下图:

image.png

步骤2:排序

下面将对指定列的内容进行排序操作:

  • by="中国就业人口(万人)":指定排序的列索引为"中国就业人口(万人)"这列,即按照"中国就业人口(万人)"这列对所有样本进行排序。
  • ascending=False:表示降序排列
# 3. 排序
people.sort_values(by="中国就业人口(万人)", ascending=False)

运行结果如下图所示:

image.png

步骤3:多字段排序

如果两个值一样大怎么办?

  • 我们可以按照多个字段进行排序
  • by里面按顺序传入多个字段,这样就能按优先级顺序进行排序了
  • by=["出生人口(万)", "中国人均GPA(美元计)"]:比如在出生人口数相同的时候,谁的GDP大谁排在前面
# 按照多个字段进行排序
# 当两个值相等的时候,比如在出生人口数相同的时候,谁的GDP大谁排在前面
people.sort_values(by=["出生人口(万)", "中国人均GPA(美元计)"], ascending=False)

1.2.2 对索引进行排序

.sort_index()能够对行索引进行排序,使用时可以将行索引排序后的表格用变量重新接收。若没有指定ascending参数,则默认按照从小到大进行排序。

# 对索引日期进行从小到大排序
stock_paixu = pd.read_csv("stock_day.csv")
stock_paixu.sort_index()

运行结果如下图所示:可以发现datetime形式的日期索引能够被识别并正确按照时间早晚进行排序。

image.png