pandas实战:分析三国志人物示例实现

 更新时间:2023年01月19日 10:52:58   作者:xchenhao  
这篇文章主要介绍了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()

中位数:df['年龄'].median()

众数:df['年龄'].mode()

最大值:df['年龄'].max()

最小值:df['年龄'].min()

列筛选

# 筛选年轮小于 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

到此这篇关于pandas实战:分析三国志人物示例实现的文章就介绍到这了,更多相关pandas实战内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决 jupyter notebook 回车换两行问题

    解决 jupyter notebook 回车换两行问题

    这篇文章主要介绍了解决 jupyter notebook 回车换两行问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器

    浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器

    这篇文章主要介绍了Python中的可迭代对象、迭代器、For循环工作机制、生成器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 两个元祖T1=(''a'', ''b''),T2=(''c'', ''d'')使用匿名函数将其转变成[{''a'': ''c''},{''b'': ''d''}]的几种方法

    两个元祖T1=(''a'', ''b''),T2=(''c'', ''d'')使用匿名函数将其转变成[{''a'': '

    今天小编就为大家分享一篇关于两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Python yield 关键词,

    Python yield 关键词,

    这篇文章主要介绍了Python yield 关键词,要理解yield的作用,你必须理解生成器是什么。在理解生成器之前,必须先理解迭代器。下面文章我们就先从
    迭代器开始展开yield关键词的相关自资料 ,需要的朋友可以参考一下
    2021-12-12
  • Python OpenCV 图像平移的实现示例

    Python OpenCV 图像平移的实现示例

    本篇博客学习OpenCV 中关于图像平移的方法,核心学习到的方法是warpAffine,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • Django数据库表反向生成实例解析

    Django数据库表反向生成实例解析

    这篇文章主要介绍了Django数据库表反向生成实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python中round函数保留两位小数的方法

    python中round函数保留两位小数的方法

    在本篇内容里小编给各位分享的是一篇关于python中round函数保留两位小数的方法及相关知识点,有兴趣的朋友们可以学习下。
    2020-12-12
  • Python入门篇之字符串

    Python入门篇之字符串

    可能大多数人在学习C语言的时候,最先接触的数据类型就是字符串,因为大多教程都是以"Hello world"这个程序作为入门程序,这个程序中要打印的"Hello world"就是字符串。今天我们来了解一下Python中的字符串,看看它的用法。
    2014-10-10
  • Python如何获取Win7,Win10系统缩放大小

    Python如何获取Win7,Win10系统缩放大小

    这篇文章主要介绍了Python如何获取Win7,Win10系统缩放大小,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 浅谈Python3中print函数的换行

    浅谈Python3中print函数的换行

    这篇文章主要介绍了浅谈Python3中print函数的换行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论