最新要闻
- 瑞虎8保养灯怎么消除(本田冠道保养灯怎么消除?) 环球速递
- 王永调研阿洛亚与蜜泉湖联通工程时强调:树立“大景区、大旅游”理念 努力打造全域旅游胜地|每日速递
- 天天要闻:日本人拆了辆比亚迪海豹 还出了本书 定价6.7万
- 你买过“游戏盘”么?分析师:无实体游戏将在2028年成主流|资讯
- 居理买房暴雷!前员工称“欠薪千万元,丈母娘顶替法人” 全球观焦点
- ps保存不了jpg格式怎么办(ps保存不)
- 惩治网暴,公检法三部门公开征求意见!维权难度能降低吗?
- 湖南博物馆千年古尸_湖南博物馆千年女干尸|焦点关注
- 极目时评丨环卫母亲与高考儿子相拥而泣刷屏,普通人改变命运的努力打动人心
- 坚守“可靠”坦克Hi4-T 当下新能源越野的更优解 世界播报
- 当前聚焦:遗体告别仪式流程和掩口流程(遗体告别仪式流程)
- 国家防总启动防汛四级应急响应,派工作组赴广西福建指导救灾
- 手机充电很慢是怎么回事呢_手机充电很慢
- 《猎魔人》S3新预告再惹观众怒火 服装造型太糟糕-当前热闻
- 我是大运火炬手丨第一棒火炬手邹敬园:我在成都等你们
- 打新套利动辄千万,“万人摇”乱象丛生,楼市限价将“退出”? 今日热议
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【世界播资讯】【技术积累】Python中的Pandas库【三】
什么是Series
Series是一种带有标签的一维数组,可以容纳各种类型的数据(例如整数,浮点数和字符串)。每个Series对象都有一个索引,它可以用来引用每个元素。Series对象的主要特征是可以进行矢量化操作(即一次对整个序列进行操作),因此非常适合处理数值数据。
(资料图)
什么是DataFrame?
DataFrame是一个带有标签的二维数据结构,可以容纳各种类型的数据(例如整数,浮点数和字符串)。每个DataFrame对象都由行和列组成,行表示一个实例,列表示属性。您可以将DataFrame视为电子表格或SQL表。DataFrame的主要特征是可以进行矢量化操作,因此非常适合处理具有多种属性的数据。此外,DataFrame还具有一些其他功能,例如灵活的数据对齐,分组和聚合,数据排序和合并等。
Pandas库中的Index对象是什么?
Pandas库中的Index对象是一种存储轴标签的不可变数据结构。它可以看做是Series和DataFrame的标识符,它们用来标识单个条目或多个相同类型的数据。Index可以是整数、字符串或自定义类型的对象,它们的主要功能包括:查找、切片、分组、聚合等。
Index对象的特点有以下几个方面:
- 不可变性:一旦创建,Index对象的元素不能被修改。
- 唯一性:Index对象中的元素必须是唯一的,否则会引发异常。
- 有序性:Index对象的元素可以按照定义的顺序排列,搜索和切片更高效。
Index对象可以通过多种方式创建,例如从一个列表、数组、元组、字典、DataFrame等对象中创建,也可以手动创建。在DataFrame中,行和列都有自己的Index对象,而在Series中,只有一维的数据和一个Index对象。利用Index对象,可以很方便地对数据进行索引、排序和子集切片等操作,提高了数据处理的效率。
如何创建Series?
1.通过列表或数组创建:可以通过pd.Series()方法将列表或数组转换成Series对象,例如:
import pandas as pddata = [1, 2, 3, 4, 5]s = pd.Series(data)print(s)# 输出结果为:# 0 1# 1 2# 2 3# 3 4# 4 5# dtype: int64
2.通过字典创建:可以通过pd.Series()方法将字典转换成Series对象,例如:
import pandas as pddata = {"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}s = pd.Series(data)print(s)# 输出结果为:# a 1# b 2# c 3# d 4# e 5# dtype: int64
如何创建DataFrame
1.通过列表或数组创建:可以通过pd.DataFrame()方法将列表或数组转换成DataFrame对象,例如:
import pandas as pddata = {"name": ["Tom", "John", "Mary", "Lisa", "Bob"], "age": [28, 25, 23, 24, 27], "score": [89, 78, 88, 95, 85]}df = pd.DataFrame(data)print(df)# 输出结果为:# name age score# 0 Tom 28 89# 1 John 25 78# 2 Mary 23 88# 3 Lisa 24 95# 4 Bob 27 85
2.通过字典创建:可以通过pd.DataFrame()方法将字典转换成DataFrame对象,例如:
import pandas as pddata = {"name": ["Tom", "John", "Mary", "Lisa", "Bob"], "age": [28, 25, 23, 24, 27], "score": [89, 78, 88, 95, 85]}df = pd.DataFrame(data, index=["one", "two", "three", "four", "five"])print(df)# 输出结果为:# name age score# one Tom 28 89# two John 25 78# three Mary 23 88# four Lisa 24 95# five Bob 27 85
3.通过从文件中读取数据创建:可以通过pd.read_方法()将本地存储的文件导入DataFrame对象,例如:
import pandas as pddf = pd.read_csv("data.csv")print(df)# 输出结果为:# name age score# 0 Tom 28 89# 1 John 25 78# 2 Mary 23 88# 3 Lisa 24 95# 4 Bob 27 85
如何对DataFrame进行分组?
Pandas库中的DataFrame可以按照一个或多个列的值对数据集进行分组。分组后的数据集可以进行多种操作,如计算平均值、总和等。
下面是对DataFrame进行分组的基本步骤:
- 导入Pandas库
- 创建DataFrame, 例如,创建一个简单的DataFrame,包含姓名、性别和年龄:
- 对DataFrame进行分组,可以按照一个或多个列的值对DataFrame进行分组
- 对分组后的数据集进行操作,可以对分组后的数据集进行各种计算,如计算平均值和总和。
import pandas as pd# 创建DataFramedata = {"Name": ["Alice", "Bob", "Charlie", "David", "Ella", "Frank"], "Gender": ["F", "M", "M", "M", "F", "M"], "Age": [25, 34, 42, 19, 31, 28]}df = pd.DataFrame(data)# 对DataFrame进行分组grouped = df.groupby(["Gender", "Age"])# 计算每个性别和年龄段的总和print(grouped.sum())
如何对DataFrame进行聚合操作?
对于DataFrame进行聚合,可以使用groupby()方法将数据按照指定的列进行分组,然后再对分组后的数据进行统计、计算等操作。
具体步骤如下:
使用groupby()方法对数据进行分组,可以按照单列或多列进行分组
对分组后的数据进行统计、计算等操作,可以使用常见的聚合函数,比如sum()、mean()、max()、min()、count()等
对聚合后的数据进行重命名、排序等处理,最后得到需要的聚合结果
import pandas as pd# 创建示例数据data = {"category": ["A", "A", "B", "B", "B", "C", "C"], "value": [1, 2, 3, 4, 5, 6, 7]}df = pd.DataFrame(data)# 按照category列进行分组,计算value列的和、平均值和数量result = df.groupby("category").agg({"value": ["sum", "mean", "count"]})# 对聚合结果进行重命名和排序result.columns = ["total_value", "mean_value", "count"]result.sort_values("total_value", ascending=False, inplace=True)print(result)
如何对DataFrame进行合并操作?
对DataFrame进行合并操作,可以使用merge()方法,将两个DataFrame按照指定的列进行连接,类似于SQL中的Join操作。如果两个DataFrame的列名相同,则可以使用on参数指定连接的列,如果列名不同,则需要使用left_on和right_on参数指定连接的列。
具体步骤如下:
使用merge()方法将两个DataFrame按照指定列进行连接
可以选择不同的连接方式,包括inner、outer、left、right等
对连接后的数据进行排序、去重、重命名等处理,最终得到需要的结果
import pandas as pd# 创建示例数据1data1 = {"id": [1, 2, 3, 4, 5], "name": ["Tom", "Jerry", "Lucy", "Lily", "Jim"], "age": [20, 22, 25, 23, 26]}df1 = pd.DataFrame(data1)# 创建示例数据2data2 = {"id": [1, 2, 3, 6, 7], "salary": [2000, 2200, 2500, 2300, 2600], "gender": ["M", "F", "F", "F", "M"]}df2 = pd.DataFrame(data2)# 按照id列进行左连接result = pd.merge(df1, df2, on="id", how="left")# 对连接后的数据进行去重、排序、重命名result.drop_duplicates("id", inplace=True)result.sort_values("id", inplace=True)result.rename(columns={"name": "user_name", "salary": "user_salary"}, inplace=True)print(result)
如何对DataFrame进行重塑操作?
对DataFrame进行重塑操作,包括转置、堆叠和反堆叠等。转置是将DataFrame的行与列互换,堆叠是将多个列进行合并为一列,反堆叠则是将一列拆分为多个列。
具体步骤如下:
对DataFrame进行转置,可以使用T属性或transpose()方法实现。
对DataFrame进行堆叠操作,可以使用stack()方法实现,堆叠时需要指定堆叠的列或行。
对DataFrame进行反堆叠操作,可以使用unstack()方法实现,反堆叠时需要指定反堆叠的列或行。
import pandas as pd# 创建示例数据data = {"name": ["Tom", "Jerry", "Lucy"], "math": [90, 80, 70], "english": [85, 78, 95], "science": [88, 92, 85]}df = pd.DataFrame(data)# 转置DataFrameresult1 = df.T# 堆叠DataFrameresult2 = df.set_index("name").stack().reset_index()# 反堆叠DataFrameresult3 = df.set_index("name").unstack().reset_index()print(result1)print(result2)print(result3)
如何对DataFrame进行透视表操作?
对DataFrame进行透视表操作,可以使用pivot_table()方法进行,透视表可以根据行、列和值进行数据汇总和计算,并展示出汇总计算后的结果。
具体步骤如下:
使用pivot_table()方法对DataFrame进行透视操作,需要指定行、列和值参数,并选择需要的聚合函数进行计算。
可以对透视表进行去重、排序和重命名等处理后,得到需要的结果。
import pandas as pd# 创建示例数据data = {"name": ["Tom", "Jerry", "Lucy", "Lily", "Jim", "Bob", "Alice"], "gender": ["M", "F", "F", "F", "M", "M", "F"], "age": [20, 22, 25, 23, 26, 21, 30], "category": ["A", "A", "B", "B", "B", "C", "C"], "salary": [2000, 2200, 2500, 2300, 2600, 2800, 2900]}df = pd.DataFrame(data)# 对数据进行透视表操作,分别统计每种category、gender和age_range下salary的平均值和数量result = pd.pivot_table(df, index=["category", "gender"], columns=pd.cut(df["age"], [20, 25, 30]), values=["salary"], aggfunc={"salary": ["mean", "count"]}, fill_value=0)# 对透视表进行去重、排序、重命名等处理result = result.stack(level=[0, 1])result.columns = ["_".join(col).strip() for col in result.columns.values]result.reset_index(inplace=True)result.sort_values(["category", "gender", "age"], inplace=True)print(result)
如何处理重复值?
Pandas库中提供了一些方法来处理重复值,包括检测和删除重复值。
检测重复值:
Pandas库中提供了duplicated()方法用来检测重复值,返回一个布尔类型的Series,表示每一行是否为重复行。
drop_duplicates()方法则是用来删除重复行,返回一个新的DataFrame,移除重复行之后的版本。
import pandas as pd# 创建一个包含重复行的DataFramedf = pd.DataFrame({"col1": [1, 2, 3, 4, 4, 5],"col2": ["A", "B", "C", "D", "D", "E"]})print(df)# 检测重复行print(df.duplicated())# 删除重复行df_clean = df.drop_duplicates()print(df_clean)
如何处理异常值?
import pandas as pdimport numpy as np# 创建一个包含异常值的Seriess = pd.Series([1, 2, 3, 4, 5, 100])print(s)# 使用Z-score方法检测异常值zscore_threshold = 3 # 设置阈值为3mean = s.mean()std = s.std()zscore = (s - mean) / stdprint(zscore.abs() > zscore_threshold)# 使用IQR方法检测异常值q1 = s.quantile(0.25)q3 = s.quantile(0.75)iqr = q3 - q1iqr_threshold = 1.5 # 设置阈值为1.5print((s < q1 - iqr_threshold * iqr) | (s > q3 + iqr_threshold * iqr))# 使用fillna()方法替换异常值s_clean = s.copy()s_clean[s_clean > 10] = np.nan # 设置异常值,将大于10的值设置为缺失值s_clean = s_clean.fillna(s_clean.median()) # 使用中位数来填充缺失值print(s_clean)# 使用replace()方法替换异常值s_clean = s.replace(100, s.median()) # 将100替换为中位数print(s_clean)
如何处理离群值?
Pandas库中提供了一些方法来处理离群值(Outlier),包括检测和替换离群值。
检测离群值: Pandas库中提供了一些方法来检测离群值,比如基于数据的分布和规模,使用Z-score或IQR两种方法进行离群值的检测,并返回一个布尔类型的Series,表示每一行是否为离群值。
- Z-score方法将每个值转换成其到平均值的标准偏差的距离,超过给定阈值的值被视为离群值。
- IQR方法则是基于四分位数,将数据划分成四个部分,其中50%的数据落在中间,将中间部分的极端数据看做离群值。
替换离群值: 处理离群值时,我们可以使用fillna()方法或replace()方法来替换离群值。
- fillna()方法可以使用mean、median、mode等方法替换缺失值,也可以使用给定的常数或者使用前一个或后一个非缺失值填充。
- replace()方法可以使用常数或者使用给定的字典或函数替换特定的值。
import pandas as pdimport numpy as np# 创建一个包含离群值的Seriess = pd.Series([1, 2, 3, 4, 5, 100])print(s)# 使用Z-score方法检测离群值zscore_threshold = 3 # 设置阈值为3mean = s.mean()std = s.std()zscore = (s - mean) / stdprint(zscore.abs() > zscore_threshold)# 使用IQR方法检测离群值q1 = s.quantile(0.25)q3 = s.quantile(0.75)iqr = q3 - q1iqr_threshold = 1.5 # 设置阈值为1.5print((s < q1 - iqr_threshold * iqr) | (s > q3 + iqr_threshold * iqr))# 使用fillna()方法替换离群值s_clean = s.copy()s_clean[s_clean > 10] = np.nan # 将大于10的值设置为缺失值s_clean = s_clean.fillna(s_clean.median()) # 使用中位数来填充缺失值print(s_clean)# 使用replace()方法替换离群值s_clean = s.clip(0, 10) # 将大于10的值和小于0的值都设置为10和0print(s_clean)
如何进行数据类型转换?
在Pandas库中,我们需要对文件读入的数据进行处理和转换后,才能在之后的分析中有效地使用。数据类型转换是数据预处理中最基本的操作之一,数据类型的转换能够将原有数据的类型转变为用户需要的类型,包括将字符串转换为数字、将数字转换为日期、将数值转换为类别类型等,Pandas库中提供了astype()方法来进行数据类型转换。
astype()方法: Pandas库中的astype()方法可以将一个或多个列的数据类型转换为另一种类型。使用astype()方法,需要在括号中指定要转换数据类型的列名和数据类型。转换数据类型后将返回一个新的DataFrame,原数据不发生改变。
import pandas as pd# 创建一个包含数字和字符串的DataFramedf = pd.DataFrame({"col1": [1, 2, 3],"col2": ["4", "5", "6"]})print(df.dtypes)# 转换数据类型df["col2"] = df["col2"].astype(int)print(df.dtypes)
关键词:
【世界播资讯】【技术积累】Python中的Pandas库【三】
Linux命令篇 - tar 命令
瑞虎8保养灯怎么消除(本田冠道保养灯怎么消除?) 环球速递
王永调研阿洛亚与蜜泉湖联通工程时强调:树立“大景区、大旅游”理念 努力打造全域旅游胜地|每日速递
天天要闻:日本人拆了辆比亚迪海豹 还出了本书 定价6.7万
你买过“游戏盘”么?分析师:无实体游戏将在2028年成主流|资讯
居理买房暴雷!前员工称“欠薪千万元,丈母娘顶替法人” 全球观焦点
ps保存不了jpg格式怎么办(ps保存不)
惩治网暴,公检法三部门公开征求意见!维权难度能降低吗?
湖南博物馆千年古尸_湖南博物馆千年女干尸|焦点关注
焦点速讯:问麻了…阿里一面索命27问,过了就60W+
世界通讯!小迪网安笔记二:信息收集
极目时评丨环卫母亲与高考儿子相拥而泣刷屏,普通人改变命运的努力打动人心
坚守“可靠”坦克Hi4-T 当下新能源越野的更优解 世界播报
当前聚焦:遗体告别仪式流程和掩口流程(遗体告别仪式流程)
国家防总启动防汛四级应急响应,派工作组赴广西福建指导救灾
手机充电很慢是怎么回事呢_手机充电很慢
《猎魔人》S3新预告再惹观众怒火 服装造型太糟糕-当前热闻
我是大运火炬手丨第一棒火炬手邹敬园:我在成都等你们
打新套利动辄千万,“万人摇”乱象丛生,楼市限价将“退出”? 今日热议
西安艺术高级中学网站(西安艺术高级中学)
天津滨海新区可提供伊立浦电压力锅维修服务地址在哪 全球今热点
全球讯息:化疗的时候有什么症状(化疗是什么感觉)
当你变成兔子中文在线玩_当你变成兔子
Maven常用命令及其作用_全球速读
tab是什么意思英语_tab是什么意思-天天报道
今亮点!得不到就毁掉!租客拿到6万补偿后“毁坏式”退房 被判赔偿9万元!
三星最强安卓平板即将发布,Galaxy Tab S9 Ultra 通过 FCC 认证
当前头条:苹果M2 Ultra在Geekbench 5跑分并没有碾压英特尔、AMD,还不如i9-13900K
清淡饮食吃什么小吃(清淡饮食吃什么)|当前快看
祁阳市人民政府官网_祁阳的风景名胜和非遗文化|当前通讯
【全球播资讯】女子拍到50多条锦鲤首尾相连“龙形游” 网友:这就是鱼贯而入吧
中国电信自主品牌!麦芒全新A系列官宣:新机5000万像素主摄确定
焦点信息:占便宜?Xbox"薅羊毛"《暗黑破坏神4》终极版已强制退款
买二手房后发现房屋漏水怎么办(房屋漏水怎么办) 天天报道
好玩好看,上海国际电影节首次推出“数字影视体验展”
环球资讯:首台套50万千瓦冲击式水电机组项目开工
第53届亚太桥牌锦标赛开赛
每日简讯:聊聊Flink的必知必会(一)
天天最新:橄榄可以搭配葡萄酒吗?
全球快讯:安逸四川日历海报丨在广元利州月坝村:踏湖望星空
12306买卧铺票可以在线选铺了!操作指南出炉:很方便
全球快讯:夫妻节目里的反套路_夫妻节
阴阳师樱花妖技能什么意思(阴阳师樱花妖的夫君是谁) 观察
猪饲料品牌名字_猪饲料品牌-环球热议
博纳董事长于冬:剧集的崛起是对电影真正的冲击,不是拼特效的时代了
阔太王艳48岁重新复出,穿花裙跳舞秀曼妙曲线,彻底颠覆豪门形象 天天报道
还能算中国中型SUV标杆?丰田汉兰达月销已不足5000 隔壁理想已破万
当前短讯!CPU性能激增20%!苹果M2 Ultra处理器Geekbench 6跑分出炉
能否继续维持MPV霸主地位?全新丰田埃尔法现身国内 6月21日正式发布
全自动马桶水箱盖怎么打开(马桶水箱盖怎么打开)_今日最新
上海地铁9号线枫泾何时开通(上海地铁9号线)|每日热点
遵守公司规章制度总结怎么写(遵守公司规章制度总结)|世界独家
足字旁那个字怎么写(足字旁怎么打)
新加坡羽毛球公开赛:陈雨菲晋级女单半决赛
天天即时:《一张纸条》阅读答案(一张纸条阅读答案)
if little by little(if little)
老百姓的“柴米油盐”不易拍
魅族史上最美旗舰!魅族20 PRO 618特惠:极简“纽扣”三摄 每日快播
每日速讯:猛男必入 618新潮配色手机推荐:这颜值才对味
每日资讯:珠峰被救女子所雇登山公司深夜发声:救援费已支付 感谢救援
抽中检查就撤IPO的格林生物二闯创业板,拟再度扩充产能 热消息
王永利:人民币国际化应有序推进_世界快播报
环球热点评!Linux下六个有关file使用的实例
我国加大产销对接促脱贫地区帮扶产业高质量发展_当前热讯
我是大运火炬手丨丁宁:大运会既是赛场,更是世界青年的交流展示平台
余承东同款座驾!AITO问界M5智驾版下周交付 焦点热议
女记者体验Vision Pro后压红额头和鼻子 苹果史上最贵新品遇冷:已砍单95%|每日动态
高考生换机高峰来了!卢伟冰:Redmi K60、小米13真卖爆了 天天速读
打造“第三生活空间” 深蓝S7要爆红!
广汽总经理:为电池材料厂打长工不现实 我们车企他们永远得罪不起
古老沣河涌动新活力-环球实时
国内首条“丝路海运”电商快线开通首年进出口破100亿
q点是什么意思(q点)
善学者尽其理善行者究其难什么意思遇事三思而后行(善学者尽其理 善行者究其难什么意思)
高质量发展调研行 | 在智慧港口见证大湾区经济活力——广州南沙港走访一线见闻-全球热资讯
一位付费API工程师如何制造了推特今年第七次崩溃?
歌手李娜的丈夫照片(歌手李娜的丈夫) 天天快资讯
百万跑车变“火车”!杭州一法拉利458突然起火:车身烧出洞
天天滚动:诗词里的遗产:龙虎天下绝 千载玉棺探秘
赞美祖国大好河山的诗句_祖国大好河山的诗句
热点聚焦:宋代诗人陈与义有诗(宋代诗人陈与义乘船出游时)
房子贷款多久可以下来(房子首付付了贷款没下来可以退吗)
平安建设,你我同行—— 海湾旅游区开展2023年“平安建设宣传月”活动
莱商银行网上银行助手_莱商银行网上银行
护航高考|山东平安产险红马甲交上答卷 世界新要闻
全球今日讯!红烧牛腩的家常做法简单又好吃_红烧牛腩的家常做法
48个班!遂宁一公立学校今年9月投用|每日报道
八字偏强八字喜木是什么意思_八字偏强
蛇岛(九蛇岛)-全球快播报
环球热点评!滴滴招聘无车司机可靠吗(滴滴招聘无车司机)
男子被墙角的蛇跳出攻击 专家:夏季雨前、雨后要格外注意防蛇
“海底长城”!深中通道海底隧道历时5年成功合龙:2024年通车
哥伦比亚4名儿童坠机后丛林生存40天后获救:用树枝搭小棚 裹毯瘦到脱相
全球速看:国铁集团今起在12306网站(含App)试行在线选铺服务
丝瓜不宜与什么一起吃呢
视点!潈怎么读音_似的读音是什么
快资讯丨京津、京唐等多条城际列车调整扩容
这就是信心|优化营商环境 各地硬招、实招频出 环球快消息
老百姓的“柴米油盐”不易拍_全球快播