Pandas合并数据集

第1关:Concat与Append操作

python 复制代码
import pandas as pd

"""
data.csv和data1.csv是两份与各国幸福指数排名相关的数据,为了便于查看排名详情,所以需要将两份数据横向合并。数据列名含义如下:

列名    说明
Country (region)    国家
Ladder    排名
SD of Ladder    排名的偏差
Positive affect    积极影响
Negative affect    消极影响
Social support    社会福利
Freedom    自由度
Corruption    腐败程度
Generosity    慷慨程度
Log of GDP per capita    人均GDP的对数
Healthy life expectancy    健康程度

读取step1/data.csv和step1/data1.csv两份数据;
首先将两个数据横向合并;
将索引设为排名(Ladder)列;
填充空值为0;
具体要求请参见后续测试样例。
"""


def task1():
    # ********** Begin **********#
    # 读取数据
    d1 = pd.read_csv('step1/data.csv', header=0)
    d2 = pd.read_csv('step1/data1.csv', header=0)

    # 横向合并,将索引设为排名(Ladder),填充空值为0
    d3 = pd.concat([d1, d2], axis=1)
    result = d3.set_index('Ladder').fillna(0)

    # ********** End **********#
    return result

第2关:合并与连接

python 复制代码
import pandas as pd
def task2(dataset1,dataset2,dataset3):
    # ********** Begin **********#
    data = pd.DataFrame(dataset1)
    data1 = pd.DataFrame(dataset2)
    data2 = pd.DataFrame(dataset3)
    data2.rename(columns={"id": "user_id"}, inplace=True)
    data3 = pd.merge(data, data1, on="user_id", how="left")
    data4 = pd.concat([data2, data3], ignore_index=True)
    result = data4.sort_values("user_id").drop_duplicates("user_id")
    # ********** End **********#
    return result

第3关:案例:美国各州的统计数据

python 复制代码
import pandas as pd
import numpy as np


def task3():
    # ********** Begin **********#
    # 读取三个csv文件
    pop = pd.read_csv('./step3/state-population.csv')
    areas = pd.read_csv('./step3/state-areas.csv')
    abbrevs = pd.read_csv('./step3/state-abbrevs.csv')

    # print(pop)
    # print(areas)
    # print(abbrevs)

    # 合并pop和abbrevs并删除重复列

    # pop的state/region列与abbrevs的abbreviation列进行合并,
    # 还需要通过how='outer'确保数据没有丢失,
    # 得到合并后的结果,发现有一个重复列需要删除,所以,删除abbreviation列;
    pa = pd.merge(pop, abbrevs, left_on=['state/region'], right_on=['abbreviation'], how='outer')
    pa = pa.drop('abbreviation', axis=1)
    """
    # 来全面检查一下数据是否有缺失,对每个字段逐行检查是否有缺失值,通过结果可知只有population和state列有缺失值;
    for i in pa:
        print(i, pa[i].isnull().any())
    # 输出发现state/region = PR的对应的population和state都是空值
    print(pa[pa['population'].isnull()])
    # US对应的state也是空值
    print(pa[pa['state'].isnull()])
    """
    # 填充对应的全称
    pa.loc[pa['state/region'] == 'PR', 'state'] = 'Puerto Rico'
    pa.loc[pa['state/region'] == 'USA', 'state'] = 'United States'

    # 合并面积数据,合并pa和areas,key=state
    pa = pd.merge(pa, areas, on='state', how='left')

    # 输出发现还有缺失值,检查一下
    # 可以得出缺少的是全美国的面积数据
    # print(pa[pa['area (sq. mi)'].isnull()]['state'].unique())

    # 我们不需要这个数据,删掉缺失值
    pa = pa.dropna()

    # 取year = 2010的数据,并将索引设置为state列
    data2010 = pa[pa['year'] == 2010]
    data2010.set_index('state', inplace=True)  # inplace = True 会替换掉之前的state列,只保留索引列

    # 计算人口密度,population / 面积area
    density = data2010['population'] / data2010['area (sq. mi)']
    # print(density)
    # print(data2010)

    # 一个国家的人口密度分为成年和未成年,我们将其合并
    # 数据中呈现的就是两个相同的state的信息,我们按照state分组后合并
    sum_density = density.groupby('state').sum()
    # print(sum_density)

    # 对上面的值进行排序
    # ascending默认=True,即升序排序
    sort_sum_density = sum_density.sort_values(ascending=False)
    # print(sort_sum_density)

    print('前5名:\n{}'.format(sort_sum_density.head(5)))
    print('后5名:\n{}'.format(sort_sum_density.tail(5)))
    
相关推荐
benchmark_cc7 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
databook3 天前
经常听到的透视表是干什么的?
python·数据分析·pandas
benchmark_cc4 天前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
benchmark_cc4 天前
用 00700.HK 做港股行情清洗:字段核对、校验与个人量化开发实践
python·数据分析·pandas·量化交易·股票数据·quantdash
第九序言T4 天前
数据分析岗 Pandas 面试题 20 道(上):概念与读代码
python·数据分析·pandas·数据处理
2601_966949654 天前
如何封装 qd.klines.batch(),让批量 K 线查询函数在多个策略中复用?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
Blockbuater_drug5 天前
《经典机器学习实战》第 2 课:回归入门——环境、工具与数据准备
线性回归·pandas·scikit-learn·数据可视化·数据清洗·最小二乘法·conda环境
烂蜻蜓5 天前
Pandas入门教程(十六):常用函数速查手册——读写、清洗、选择、排序、分组与统计
pandas
quantdash_cc6 天前
个人开发者用 QuantDash 读取港股行情:00700.HK 的 Python 函数封装与校验实践
python·数据分析·pandas·量化交易·股票数据·quantdash
databook6 天前
Pandas 与 Polars:语法、性能和资源占用方面的对比
python·数据分析·pandas