pandas 实战:分析三国志人物

2023-11-02 03:59

本文主要是介绍pandas 实战:分析三国志人物,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

背景

Pandas 是 Python 的一个工具库,用于数据分析。由 AQR Capital Management 于 2008 年 4 月开发,2009 年开源,最初被作为金融数据分析工具而开发出来。Pandas 名称来源于 panel data(面板数据)和 Python data analysis(Python 数据分析)。适用于金融、统计等数据分析领域。

特点:两大数据结构

Series 和 DataFrame
(1)Series:一维数据(列+索引)

pandas.Series(['东汉', '马腾', '?', 212], index=['国家', '姓名', '出生年份', '逝世年份'])

series

(2)DataFrame:二维数据(表格:多个列+行/列索引)
Series 和 DataFrame

pandas.DataFrame([['东汉', 300],['魏国', 800],['蜀国', 400],['吴国', 600],['西晋', 1000]
], columns=['国家', '国力'])

dataframe

安装

如果你使用的是数据科学的 Python 发行版:Anaconda,可以使用 conda 安装

conda install pandas

如果是普通的 Python 环境,可以使用 pip 安装

pip install pandas

实战

我们先看看数据长啥样,数据存在 sanguo.csv 文档中

$ head sanguo.csv

head

(1)导入模块

import pandas as pd

(2)读取 csv 数据

# 当前目录下的 sanguo.csv 文件,na_values 指定哪些值为空
df = pd.read_csv('./sanguo.csv', na_values=['na', '-', 'N/A', '?'])

1)查看数据

# 查看前 5 条
df.head(5)
# NaN 为空值

df.head()

# 查看后 5 条
df.tail(5)

df.tail()

2)查看数据概况

df.dtypes
# 查看数据类型

dtypes

df.info()
# 有 25 行,5 列
# 各列的名称(kindom、name、birth、die、character)、非空数目、数据类型

df.info()

df.describe()
# 查看数值型列统计值:总数、平均值、标准差、最小值、25%/50%/75% 分位数、最大值

df.describe

3)数据操作
设置列名

df.columns = ['国家', '姓名', '出生年份', '逝世年份', '角色']
df.head()

设置列名

添加新列

# 计算年龄
df['年龄'] = df['逝世年份'] - df['出生年份']
df.head(10)

添加新列
计算列平均值、中位数、众数、最/小值

功能函数
平均值df['年龄'].mean()50.57142857142857
中位数df['年龄'].median()53.0
众数df['年龄'].mode()72.0
最大值df['年龄'].max()72.0
最小值df['年龄'].min()12.0

列筛选

# 筛选年轮小于 50 的数据
df[df['年龄'] < 50]

筛选数据

# 筛选曹姓的数据
df[df['姓名'].str.startswith('曹')]

筛选数据

分组

df.groupby('国家')['姓名'].count()
# 类似于 SQL: SELECT 国家, COUNT(姓名) FROM x GROUP BY 国家

分组
apply 函数

df['状态'] = df['年龄'].apply(lambda x: '长寿' if isinstance(x, (int, float)) and x > 50 else '一般')
df.head()

apply
取数据:loc、iloc

df.loc[4]取第 5 行数据(索引从 0 开始)loc
df.loc[4:5]取第 5~6 行数据loc
df.loc[4, '姓名']
df.iloc[4, 1]
取第 5 行姓名列
或第 5 行第 2 列
loc
df.loc[4, ['姓名', '年龄']]
df.iloc[4, [1, 5]]
取第 5 行姓名、年龄列
或第 5 行第 2 列、第 6 列
loc
df.loc[4:5, ['姓名', '年龄']]
df.iloc[[4, 5], [1, 5]]
df.iloc[4:6, [1, 5]]
取第 5~6 行姓名、年龄列
或取第 5~6 行第 2 列、第 6 列
loc
df.iloc[4:9, 1:4]取 5~10 列第 2~5 列iloc

追加、合并数据
concat

# 创建列
newpeople = pd.Series(['东汉', '马腾', '?', 212, '?'], index=['国家', '姓名', '出生年份', '逝世年份', '年龄'])# 将 Series 转为 DataFrame,并对 DataFrame 转置(列转行)
newpeople = newpeople.to_frame().T# 追加行(axis=0),重置索引(ignore_index=True)
df2 = pd.concat([df, newpeople], axis=0, ignore_index=True)
df2.tail()

追加数据
merge

# 创建表格
kindom_power = pd.DataFrame([['东汉', 300],['魏国', 800],['蜀国', 400],['吴国', 600],['西晋', 1000]
], columns=['国家', '国力'])# 按国家列进行两个表格(左 df,右 kindom_power)合并
df3 = pd.merge(left=df, right=kindom_power, on='国家')
df3.head(10)

merge
4)导出数据

# 写入 sanguo_result.csv 中,不输出索引值
df.to_csv('sanguo_result.csv', index=False)

csv

参考

  • https://pandas.pydata.org/
  • https://www.runoob.com/pandas/pandas-tutorial.html
  • https://github.com/xchenhao/code-notes/blob/master/data/sanguo.csv sanguo.csv 数据

这篇关于pandas 实战:分析三国志人物的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/327961

相关文章

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Pandas利用主表更新子表指定列小技巧

《Pandas利用主表更新子表指定列小技巧》本文主要介绍了Pandas利用主表更新子表指定列小技巧,通过创建主表和子表的DataFrame对象,并使用映射字典进行数据关联和更新,实现了从主表到子表的同... 目录一、前言二、基本案例1. 创建主表数据2. 创建映射字典3. 创建子表数据4. 更新子表的 zb

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Pandas透视表(Pivot Table)的具体使用

《Pandas透视表(PivotTable)的具体使用》透视表用于在数据分析和处理过程中进行数据重塑和汇总,本文就来介绍一下Pandas透视表(PivotTable)的具体使用,感兴趣的可以了解一下... 目录前言什么是透视表?使用步骤1. 引入必要的库2. 读取数据3. 创建透视表4. 查看透视表总结前言

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数