广告位联系
返回顶部
分享到

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

python 来源:互联网 作者:佚名 发布时间:2023-01-21 16:55:50 人浏览
摘要

简介 背景 Pandas 是 Python 的一个工具库,用于数据分析。 由 AQR Capital Management 于 2008 年 4 月开发,2009 年开源,最初被作为金融数据分析工具而开发出来。 Pandas 名称来源于panel data(面

简介

背景

Pandas 是 Python 的一个工具库,用于数据分析。

由 AQR Capital Management 于 2008 年 4 月开发,2009 年开源,最初被作为金融数据分析工具而开发出来。

Pandas 名称来源于 panel data(面板数据)和 Python data analysis(Python 数据分析)。

适用于金融、统计等数据分析领域。

特点:

两大数据结构

Series 和 DataFrame

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

1

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

series

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

Series 和 DataFrame

1

2

3

4

5

6

7

pandas.DataFrame([

    ['东汉', 300],

    ['魏国', 800],

    ['蜀国', 400],

    ['吴国', 600],

    ['西晋', 1000]

], columns=['国家', '国力'])

dataframe

安装

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

1

conda install pandas

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

1

pip install pandas

实战

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

1

$ head sanguo.csv

head

(1)导入模块

1

import pandas as pd

(2)读取 csv 数据

1

2

# 当前目录下的 sanguo.csv 文件,na_values 指定哪些值为空

df = pd.read_csv('./sanguo.csv', na_values=['na', '-', 'N/A', '?'])

1)查看数据

1

2

3

# 查看前 5 条

df.head(5)

# NaN 为空值

df.head()

1

2

# 查看后 5 条

df.tail(5)

df.tail()

2)查看数据概况

1

2

df.dtypes

# 查看数据类型

dtypes

1

2

3

df.info()

# 有 25 行,5 列

# 各列的名称(kindom、name、birth、die、character)、非空数目、数据类型

df.info()

1

2

df.describe()

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

df.describe

3)数据操作

设置列名

1

2

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

df.head()

设置列名

添加新列

1

2

3

# 计算年龄

df['年龄'] = df['逝世年份'] - df['出生年份']

df.head(10)

添加新列

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

平均值:df['年龄'].mean()

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

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

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

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

列筛选

1

2

# 筛选年轮小于 50 的数据

df[df['年龄'] < 50]

筛选数据

1

2

# 筛选曹姓的数据

df[df['姓名'].str.startswith('曹')]

筛选数据

分组

1

2

df.groupby('国家')['姓名'].count()

# 类似于 SQL: SELECT 国家, COUNT(姓名) FROM x GROUP BY 国家

分组

apply 函数

1

2

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

df.head()

apply

取数据:loc、iloc

1

df.loc[4]

取第 5 行数据(索引从 0 开始)

loc

1

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

1

2

3

4

5

6

7

8

9

# 创建列

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

1

2

3

4

5

6

7

8

9

10

11

12

# 创建表格

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)导出数据

1

2

# 写入 sanguo_result.csv 中,不输出索引值

df.to_csv('sanguo_result.csv', index=False)

csv


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/xchenhao/article/details/128667563
相关文章
  • Python实现.gif图片拆分为.png图片的实现

    Python实现.gif图片拆分为.png图片的实现
    实现效果展示: 未转化前的gif图片 经转化后: ---------------------------------------------------------------------------------------图一-------------------------
  • pandas实战:分析三国志人物的实现

    pandas实战:分析三国志人物的实现
    简介 背景 Pandas 是 Python 的一个工具库,用于数据分析。 由 AQR Capital Management 于 2008 年 4 月开发,2009 年开源,最初被作为金融数据分析工具
  • 教你用Python提取PPT中的图片

    教你用Python提取PPT中的图片
    一、前言 今天要带大家实现的是PPT图片的提取。在我们学习工作中,PPT的使用还是非常频繁的,但是自己做PPT是很麻烦的,所以就需要用到
  • Python3微信支付(小程序支付)V3接口的实现
    起因: 因公司项目需要网上充值功能,从而对接微信支付,目前也只对接了微信支付的小程序支付功能,在网上找到的都是对接微信支付
  • YOLOv8训练自己的数据集(详细教程)

    YOLOv8训练自己的数据集(详细教程)
    等了好久终于等到了V8,赶紧测测效果,放张官网的比对图 官网链接 https://github.com/ultralytics/ultralytics 再下载自己所需要的权重 https://githu
  • Pandas读取csv的实现介绍
    对于文件的操作中,读写csv操作是一个比较常见的操作,很多时候可能会选择使用python中的文件读取的方式对csv文件操作,这种方式并没有
  • PyQt5使用pyqtgraph绘制波形图

    PyQt5使用pyqtgraph绘制波形图
    主程序代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
  • Python+Pygame编写一个Pong游戏

    Python+Pygame编写一个Pong游戏
    这次,我们要用Pygame写一个Pong游戏 先看看效果: 需要的模块:Pygame 在python文件同目录下新建resources文件夹,在文件夹中新建Pong文件夹,文
  • 简单有效上手Python3异步asyncio问题
    Python3异步asyncio问题 官方文档: https://docs.python.org/zh-cn/3/library/asyncio-task.html#asyncio.run 看了一大堆相关的资料和教程,针对的Python版本不同,
  • python提取xml指定内容的方法
    第一种方法:python操作xml文件 随手找了一个xml文件内容(jenkins相关文件) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计