pandas基础教程(五) pandas的多样化数据处理

pandas基础教程(五) pandas的多样化数据处理

首页动作格斗鸠摩智转刀2更新时间:2024-06-16
pandas的多样化数据处理
问题描述

《天龙八部》是金庸的著名武侠小说、里面有很多俊男靓女、如何通过算法计算出《天龙八部》中出镜最多的美女、男主谁是出场最多的、谁的年龄最大等,剔除出现最多的角色和技能,此章节只做pandas在数据中的数据化的处理、不涉及到分词和自然语言处理,在后续章节中会持续介绍。

In [5]:

dict = [["萧峰","35","丐帮","降龙十八掌"],["段誉","25","大理王室","六脉神剑"], ["虚竹","30","灵鹫宫","小无相功"],["扫地僧","100","少林寺","易筋经"], ["鸠摩智","50","吐蕃国国师","火焰刀"],["庄聚贤","25","聚贤庄","冰蚕毒掌"], ["天山童姥","80","灵鹫宫","天长地久不老功"],["无崖子","85","逍遥派","北冥神功"], ["丁春秋","55","逍遥派","化功大法"],["李秋水","70","西夏皇后","小无相功"], ["阿紫","20","丁春秋门下","化功大法"],["王语嫣","23","曼陀山庄","武学理论家"], ["段正明","60","大理","一阳指"],["段正淳","55","大理","一阳指"], ["段延庆","65","大理","一阳指"],["阿朱","18","曼陀山庄","仪容术"], ["木婉清","18","万劫谷","修罗刀"],["钟灵","16","万劫谷","闪电貂"], ["秦红棉","36","万劫谷","双刀修罗刀"], ["甘宝宝","32","万劫谷",""],["慕容复","34","燕国","斗转星移"]] # 集合数据 print(dict)

[['萧峰', '35', '丐帮', '降龙十八掌'], ['段誉', '25', '大理王室', '六脉神剑'], ['虚竹', '30', '灵鹫宫', '小无相功'], ['扫地僧', '100', '少林寺', '易筋经'], ['鸠摩智', '50', '吐蕃国国师', '火焰刀'], ['庄聚贤', '25', '聚贤庄', '冰蚕毒掌'], ['天山童姥', '80', '灵鹫宫', '天长地久不老功'], ['无崖子', '85', '逍遥派', '北冥神功'], ['丁春秋', '55', '逍遥派', '化功大法'], ['李秋水', '70', '西夏皇后', '小无相功'], ['阿紫', '20', '丁春秋门下', '化功大法'], ['王语嫣', '23', '曼陀山庄', '武学理论家'], ['段正明', '60', '大理', '一阳指'], ['段正淳', '55', '大理', '一阳指'], ['段延庆', '65', '大理', '一阳指'], ['阿朱', '18', '曼陀山庄', '仪容术'], ['木婉清', '18', '万劫谷', '修罗刀'], ['钟灵', '16', '万劫谷', '闪电貂'], ['秦红棉', '36', '万劫谷', '双刀修罗刀'], ['甘宝宝', '32', '万劫谷', ''], ['慕容复', '34', '燕国', '斗转星移']]


通过pandas的DataFrame生成一个表格型的数据结构,并保存到csv中。

In [62]:

import pandas as pd # 天龙八部 dict = [["萧峰","35","丐帮","降龙十八掌"],["段誉","25","大理王室","六脉神剑"], ["虚竹","30","灵鹫宫","小无相功"],["扫地僧","100","少林寺","易筋经"], ["鸠摩智","50","吐蕃国国师","火焰刀"],["庄聚贤","25","聚贤庄","冰蚕毒掌"], ["天山童姥","80","灵鹫宫","天长地久不老功"],["无崖子","85","逍遥派","北冥神功"], ["丁春秋","55","逍遥派","化功大法"],["李秋水","70","西夏皇后","小无相功"], ["阿紫","20","丁春秋门下","化功大法"],["王语嫣","23","曼陀山庄","武学理论家"], ["段正明","60","大理","一阳指"],["段正淳","55","大理","一阳指"], ["段延庆","65","大理","一阳指"],["阿朱","18","曼陀山庄","仪容术"], ["木婉清","18","万劫谷","修罗刀"],["钟灵","16","万劫谷","闪电貂"], ["秦红棉","36","万劫谷","双刀修罗刀"],["甘宝宝","32","万劫谷",""], ["慕容复","34","燕国","斗转星移"]] # 集合数据 df = pd.DataFrame(dict,columns=["人物","年龄","门派","技能"]) print("to_string格式数据:") print(df.to_string()) # to_string() 用于返回 DataFrame 类型的数据 print("不使用to_string格式数据:") print(df) # 输出结果为数据的前面 5 行和末尾 5 行,中间部分以 ... 代替 df.to_csv("天龙八部.csv") # 数据保存在csv,header=None设置头部为空index=None设置序号不存在

to_string格式数据: 人物 年龄 门派 技能 0 萧峰 35 丐帮 降龙十八掌 1 段誉 25 大理王室 六脉神剑 2 虚竹 30 灵鹫宫 小无相功 3 扫地僧 100 少林寺 易筋经 4 鸠摩智 50 吐蕃国国师 火焰刀 5 庄聚贤 25 聚贤庄 冰蚕毒掌 6 天山童姥 80 灵鹫宫 天长地久不老功 7 无崖子 85 逍遥派 北冥神功 8 丁春秋 55 逍遥派 化功大法 9 李秋水 70 西夏皇后 小无相功 10 阿紫 20 丁春秋门下 化功大法 11 王语嫣 23 曼陀山庄 武学理论家 12 段正明 60 大理 一阳指 13 段正淳 55 大理 一阳指 14 段延庆 65 大理 一阳指 15 阿朱 18 曼陀山庄 仪容术 16 木婉清 18 万劫谷 修罗刀 17 钟灵 16 万劫谷 闪电貂 18 秦红棉 36 万劫谷 双刀修罗刀 19 甘宝宝 32 万劫谷 20 慕容复 34 燕国 斗转星移 不使用to_string格式数据: 人物 年龄 门派 技能 0 萧峰 35 丐帮 降龙十八掌 1 段誉 25 大理王室 六脉神剑 2 虚竹 30 灵鹫宫 小无相功 3 扫地僧 100 少林寺 易筋经 4 鸠摩智 50 吐蕃国国师 火焰刀 5 庄聚贤 25 聚贤庄 冰蚕毒掌 6 天山童姥 80 灵鹫宫 天长地久不老功 7 无崖子 85 逍遥派 北冥神功 8 丁春秋 55 逍遥派 化功大法 9 李秋水 70 西夏皇后 小无相功 10 阿紫 20 丁春秋门下 化功大法 11 王语嫣 23 曼陀山庄 武学理论家 12 段正明 60 大理 一阳指 13 段正淳 55 大理 一阳指 14 段延庆 65 大理 一阳指 15 阿朱 18 曼陀山庄 仪容术 16 木婉清 18 万劫谷 修罗刀 17 钟灵 16 万劫谷 闪电貂 18 秦红棉 36 万劫谷 双刀修罗刀 19 甘宝宝 32 万劫谷 20 慕容复 34 燕国 斗转星移


修改csv中扫地僧的年龄改为55、大于等于100岁的人员年龄改为10、删除年龄小于16岁的钟灵

将扫地僧的年龄改为55:

In [36]:

import pandas as pd df = pd.read_csv("天龙八部.csv") # index_col=0读取时去除序列 print("取出全部:") print(df) # 取出全部 print("取出前5条:") print(df.head()) # 取出前5条 print("取出前2条:") print(df.head(2)) # 取出前2条 print("取出后5条:") print(df.tail()) # 取出后5条 print("取出后2条:") print(df.tail(2)) # 取出后2条 print("返回表格的一些基本信息:") print(df.info())

取出全部: Unnamed: 0 人物 年龄 门派 技能 0 0 萧峰 35 丐帮 降龙十八掌 1 1 段誉 25 大理王室 六脉神剑 2 2 虚竹 30 灵鹫宫 小无相功 3 3 扫地僧 100 少林寺 易筋经 4 4 鸠摩智 50 吐蕃国国师 火焰刀 5 5 庄聚贤 25 聚贤庄 冰蚕毒掌 6 6 天山童姥 80 灵鹫宫 天长地久不老功 7 7 无崖子 85 逍遥派 北冥神功 8 8 丁春秋 55 逍遥派 化功大法 9 9 李秋水 70 西夏皇后 小无相功 10 10 阿紫 20 丁春秋门下 化功大法 11 11 王语嫣 23 曼陀山庄 武学理论家 12 12 段正明 60 大理 一阳指 13 13 段正淳 55 大理 一阳指 14 14 段延庆 65 大理 一阳指 15 15 阿朱 18 曼陀山庄 仪容术 16 16 木婉清 18 万劫谷 修罗刀 17 17 钟灵 16 万劫谷 闪电貂 18 18 秦红棉 36 万劫谷 双刀修罗刀 19 19 甘宝宝 32 万劫谷 NaN 20 20 慕容复 34 燕国 斗转星移 取出前5条: Unnamed: 0 人物 年龄 门派 技能 0 0 萧峰 35 丐帮 降龙十八掌 1 1 段誉 25 大理王室 六脉神剑 2 2 虚竹 30 灵鹫宫 小无相功 3 3 扫地僧 100 少林寺 易筋经 4 4 鸠摩智 50 吐蕃国国师 火焰刀 取出前2条: Unnamed: 0 人物 年龄 门派 技能 0 0 萧峰 35 丐帮 降龙十八掌 1 1 段誉 25 大理王室 六脉神剑 取出后5条: Unnamed: 0 人物 年龄 门派 技能 16 16 木婉清 18 万劫谷 修罗刀 17 17 钟灵 16 万劫谷 闪电貂 18 18 秦红棉 36 万劫谷 双刀修罗刀 19 19 甘宝宝 32 万劫谷 NaN 20 20 慕容复 34 燕国 斗转星移 取出后2条: Unnamed: 0 人物 年龄 门派 技能 19 19 甘宝宝 32 万劫谷 NaN 20 20 慕容复 34 燕国 斗转星移 返回表格的一些基本信息: <class 'pandas.core.frame.DataFrame'> RangeIndex: 21 entries, 0 to 20 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Unnamed: 0 21 non-null int64 1 人物 21 non-null object 2 年龄 21 non-null int64 3 门派 21 non-null object 4 技能 20 non-null object dtypes: int64(2), object(3) memory usage: 968.0 bytes None


替换表格中空的数据为123456

In [64]:

import pandas as pd df = pd.read_csv("天龙八部.csv") # index_col=0读取时去除序列 df.fillna(123456, inplace = True) # 替换表格中空的数据为123456 print("取出全部:")brprint(df) # 取出全部

取出全部: Unnamed: 0 人物 年龄 门派 技能 0 0 萧峰 35 丐帮 降龙十八掌 1 1 段誉 25 大理王室 六脉神剑 2 2 虚竹 30 灵鹫宫 小无相功 3 3 扫地僧 100 少林寺 易筋经 4 4 鸠摩智 50 吐蕃国国师 火焰刀 5 5 庄聚贤 25 聚贤庄 冰蚕毒掌 6 6 天山童姥 80 灵鹫宫 天长地久不老功 7 7 无崖子 85 逍遥派 北冥神功 8 8 丁春秋 55 逍遥派 化功大法 9 9 李秋水 70 西夏皇后 小无相功 10 10 阿紫 20 丁春秋门下 化功大法 11 11 王语嫣 23 曼陀山庄 武学理论家 12 12 段正明 60 大理 一阳指 13 13 段正淳 55 大理 一阳指 14 14 段延庆 65 大理 一阳指 15 15 阿朱 18 曼陀山庄 仪容术 16 16 木婉清 18 万劫谷 修罗刀 17 17 钟灵 16 万劫谷 闪电貂 18 18 秦红棉 36 万劫谷 双刀修罗刀 19 19 甘宝宝 32 万劫谷 123456 20 20 慕容复 34 燕国 斗转星移


修改csv中扫地僧的年龄改为55、大于等于100岁的人员年龄改为10、删除年龄小于16岁的钟灵

将扫地僧的年龄改为55:

In [66]:

import pandas as pd df = pd.read_csv("天龙八部.csv") # index_col=0读取时去除序列 df.loc[df['人物']=='扫地僧','年龄'] = 55 print(df.to_string())

Unnamed: 0 人物 年龄 门派 技能 0 0 萧峰 35 丐帮 降龙十八掌 1 1 段誉 25 大理王室 六脉神剑 2 2 虚竹 30 灵鹫宫 小无相功 3 3 扫地僧 55 少林寺 易筋经 4 4 鸠摩智 50 吐蕃国国师 火焰刀 5 5 庄聚贤 25 聚贤庄 冰蚕毒掌 6 6 天山童姥 80 灵鹫宫 天长地久不老功 7 7 无崖子 85 逍遥派 北冥神功 8 8 丁春秋 55 逍遥派 化功大法 9 9 李秋水 70 西夏皇后 小无相功 10 10 阿紫 20 丁春秋门下 化功大法 11 11 王语嫣 23 曼陀山庄 武学理论家 12 12 段正明 60 大理 一阳指 13 13 段正淳 55 大理 一阳指 14 14 段延庆 65 大理 一阳指 15 15 阿朱 18 曼陀山庄 仪容术 16 16 木婉清 18 万劫谷 修罗刀 17 17 钟灵 16 万劫谷 闪电貂 18 18 秦红棉 36 万劫谷 双刀修罗刀 19 19 甘宝宝 32 万劫谷 NaN 20 20 慕容复 34 燕国 斗转星移


大于等于100岁的人员年龄改为10

In [67]:

import pandas as pd df = pd.read_csv("天龙八部.csv") # index_col=0读取时去除序列 for i in df.index:br if df.loc[i, "年龄"] >= 100: df.loc[i, "年龄"] = 10 print(df.to_string())

Unnamed: 0 人物 年龄 门派 技能 0 0 萧峰 35 丐帮 降龙十八掌 1 1 段誉 25 大理王室 六脉神剑 2 2 虚竹 30 灵鹫宫 小无相功 3 3 扫地僧 10 少林寺 易筋经 4 4 鸠摩智 50 吐蕃国国师 火焰刀 5 5 庄聚贤 25 聚贤庄 冰蚕毒掌 6 6 天山童姥 80 灵鹫宫 天长地久不老功 7 7 无崖子 85 逍遥派 北冥神功 8 8 丁春秋 55 逍遥派 化功大法 9 9 李秋水 70 西夏皇后 小无相功 10 10 阿紫 20 丁春秋门下 化功大法 11 11 王语嫣 23 曼陀山庄 武学理论家 12 12 段正明 60 大理 一阳指 13 13 段正淳 55 大理 一阳指 14 14 段延庆 65 大理 一阳指 15 15 阿朱 18 曼陀山庄 仪容术 16 16 木婉清 18 万劫谷 修罗刀 17 17 钟灵 16 万劫谷 闪电貂 18 18 秦红棉 36 万劫谷 双刀修罗刀 19 19 甘宝宝 32 万劫谷 NaN 20 20 慕容复 34 燕国 斗转星移


删除年龄小于等于16岁的钟灵

In [68]:

import pandas as pd df = pd.read_csv("天龙八部.csv") # index_col=0读取时去除序列 for i in df.index: if df.loc[i, "年龄"] <= 16: df.drop(i, inplace = True) print(df.to_string())

Unnamed: 0 人物 年龄 门派 技能 0 0 萧峰 35 丐帮 降龙十八掌 1 1 段誉 25 大理王室 六脉神剑 2 2 虚竹 30 灵鹫宫 小无相功 3 3 扫地僧 100 少林寺 易筋经 4 4 鸠摩智 50 吐蕃国国师 火焰刀 5 5 庄聚贤 25 聚贤庄 冰蚕毒掌 6 6 天山童姥 80 灵鹫宫 天长地久不老功 7 7 无崖子 85 逍遥派 北冥神功 8 8 丁春秋 55 逍遥派 化功大法 9 9 李秋水 70 西夏皇后 小无相功 10 10 阿紫 20 丁春秋门下 化功大法 11 11 王语嫣 23 曼陀山庄 武学理论家 12 12 段正明 60 大理 一阳指 13 13 段正淳 55 大理 一阳指 14 14 段延庆 65 大理 一阳指 15 15 阿朱 18 曼陀山庄 仪容术 16 16 木婉清 18 万劫谷 修罗刀 18 18 秦红棉 36 万劫谷 双刀修罗刀 19 19 甘宝宝 32 万劫谷 NaN 20 20 慕容复 34 燕国 斗转星移

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved