当前位置: 首页 > news >正文

学习 使用pandas库 DataFrame 使用

1 、 数据排序  sort_values()函数

     by:要排序的名称或名称列表, 

     sorted_df = df.sort_values(by='Age',ascending=False)  由大到小排序;

     sorted_df = df.sort_values(by='Age')  由小到大排序;

# 创建一个示例数据帧
data = {'Name': ['Tom', 'Nick', 'John', 'Amy'],'Age': [25, 29, 35, 21],'City': ['New York', 'Paris', 'London', 'Berlin']}
df = pd.DataFrame(data)# 按照Age列进行排序
sorted_df = df.sort_values(by='Age')
sorted_df.to_csv('test1.csv')
print(sorted_df)

2 把字典,列表,迭代器 数据写入csv文件,to_csv() 函数

   方式1:

        lis_offer, lis_revenue = self.get_offer_revenue()data = {'offerid': lis_offer,'revenue': lis_revenue}result = pd.DataFrame(data)result.to_csv(data_path + start_time + "offer_revenue.csv")

  方式2:

        lis_offer, lis_revenue = self.get_offer_revenue()x_offer = np.array(lis_offer).reshape(-1, 1)x_revenue = np.array(lis_revenue).reshape(-1, 1)result = np.concatenate((x_offer, x_revenue), axis=1)result = pd.DataFrame(result, columns=['offerid', 'revenue'])result.to_csv(data_path + start_time + "offer_revenue.csv")
    def read4(self):active_score_lit = []li = ['90-100.tsv']for i in li:with open(i, mode='r+', encoding='utf-8') as file:for i in file.readlines():aa = json.loads(i)active_score_lit.append(aa)data = pd.DataFrame(active_score_lit)

                                             access_cat  ... conv_score
0      {"IAB9-5":7.32514399521715,"IAB9-30":7.3255896...  ...        NaN
1      {"IAB9-30":1.2948738821508443,"IAB1":1.2948738...  ...        NaN
2      {"IAB9-5":6.751567110240471,"IAB9-30":7.859169...  ...        NaN
3                                                    NaN  ...  2013.6735
4      {"IAB1":17.93415291298408,"IAB5":3.91909391671...  ...        NaN

方式3:

    

class GetOfferid():def get_numpage(self):'''通过请求 task任务接口 num::return:输出  迭代器:offerid, strategy, country, sendSuccessCount, deviceCount'''for page in range(1, 15+1):url1 = host + "api/admin/v3/task/page?pageNum="+str(page)+"&pageSize=10"res = (requests.get(url=url1, headers=header, verify=False).json())['result']['records']time.sleep(1)for result in res:yield result['offerId'],result['strategy'],result['country'],result['sendSuccessCount'],result['deviceCount']def write_csv(self):lis_deviceCount = self.get_numpage()#  迭代器    generator     for i in lis_deviceCount:    遍历结果: ('9702', 'vba', 'IN', 155917, 48412574)result = pd.DataFrame(lis_deviceCount, columns=['offerid', 'strategy', 'country', 'sendSuccessCount', 'deviceCount'])result.to_csv(filename)

方式3:  已存在表格中写入一列数据:

  

        df = pd.read_csv(filename)df['expect_cvr'] = self.get_expect_cvr()df.to_csv(filename, index=False, encoding="utf_8_sig")

方式4:  已存在表格中写入几行数据:

               原数据:

              

               追加写入   result.to_csv(filename, mode='a'),      加上mode='a',便可以追加写入数据;

              

              追加写入  header=False,  不写出列名;

               result.to_csv(filename, mode='a', header=False)

3  查询 内容

   3-0 查询单行数据【索引】,遍历所有行的数据

     

# 创建一个示例数据帧
data = {'Name': ['Tom', 'Nick', 'John', 'Nick'],'Age': [25, 29, 35, 21],'City': ['New York', 'Paris', 'London', 'Berlin']}
df = pd.DataFrame(data)
print(df)
print("``````````````````````")
print(df[2:3])
print("``````````````````````")
for rr in df.values:print(rr)Name  Age      City
0   Tom   25  New York
1  Nick   29     Paris
2  John   35    London
3  Nick   21    Berlin
``````````````````````Name  Age    City
2  John   35  London
``````````````````````
['Tom' 25 'New York']
['Nick' 29 'Paris']
['John' 35 'London']
['Nick' 21 'Berlin']

   3-1根据内容查询出对应的索引:  np.flatnonzero(df['Name'] == 'Nick')

data = {'Name': ['Tom', 'Nick', 'John', 'Nick'],'Age': [25, 29, 35, 21],'City': ['New York', 'Paris', 'London', 'Berlin']}
df = pd.DataFrame(data)
print(df)
print("``````````````````````")
d = np.flatnonzero(df['Name'] == 'Nick')
print(d)Name  Age      City
0   Tom   25  New York
1  Nick   29     Paris
2  John   35    London
3  Nick   21    Berlin
``````````````````````
[1 3]

   3-2根据内容查询出对应的行的内容:  df.loc[df['Name'] == 'Nick']

data = {'Name': ['Tom', 'Nick', 'John', 'Nick'],'Age': [25, 29, 35, 21],'City': ['New York', 'Paris', 'London', 'Berlin']}
df = pd.DataFrame(data)
print(df)
print("``````````````````````")
f = df.loc[df['Name'] == 'Nick']
print(f)Name  Age      City
0   Tom   25  New York
1  Nick   29     Paris
2  John   35    London
3  Nick   21    Berlin
``````````````````````Name  Age    City
1  Nick   29   Paris
3  Nick   21  Berlin

DataFrame   增删改

2.3.1  行的操作

    1.1  添加行 

          pd._append(new_series, ignore_index =True)             ignore_index =True忽略标签意识

          返回一个新的DataFrame

lis_dic2 = {'offerId':[12078,18379,1817],'click':[1663,18492024,6379911],
}pd2 = pd.DataFrame(lis_dic2)
new_series = pd.Series([999,1000],index=['offerId','click'])
pd3 = pd2._append(new_series, ignore_index =True)

    1.2  修改行

         pd.loc[行标签] = [列标签内容,列标签内容]     x 表示要修改的行标签,填写所有内容不用添加标签

        pd.locx[行位置] = [列位置内容,列位置内容,]    x 表示要修改的行标签,填写所有内容不用添加标签

        

lis_dic2 = {'offerId':[12078,18379,1817,999],'click':[1663,18492024,6379911,1000],
}pd2 = pd.DataFrame(lis_dic2)
pd2.loc[2] = [1819,181918]

    1.3  删除行

       pd.drop([x]),   X表示要删除的行号,可以是多行,删除返回一个新的DataFrame

lis_dic2 = {'offerId':[12078,18379,1817,999],'click':[1663,18492024,6379911,1000],
}
pd2 = pd.DataFrame(lis_dic2)
pd3 = pd2.drop([2])

2.3.2  列的操作

     1.1  新增/修改 列

          方式1: df['列标签'] = 新列

          方式2:  pd.loc[:,'列标签'] =新列   

         如果DataFrame 不存在这一列,则新增一列; 如果DataFrame存在这一列则修改值;

new_result = DataFrame(result,columns=['sourceManager','sex','tel'])   #  新增一个列
new_result['tel'] = ['15829041959','15829041969','15829041979','15829041989']   新增这一列赋值;

    1.2  删除列

           pd.drop([x],axis=1),     X表示要删除的列,删除返回一个新的DataFrame

lis_dic2 = {'offerId':[12078,18379,1817,999],'click':[1663,18492024,6379911,1000],
}
pd2 = pd.DataFrame(lis_dic2)
pd2.loc[:,'sourceManager'] = ['ber','amie','terch','lisi']
pd3 = pd2.drop(['click'],axis=1)

DataFrame   数据查询

2.4.1         df.nlargest(n,columns)          按照columns 指定的列进行降序排序,并取前N行数据;

2.4.2         df.nsmallest(n,columns)       按照columns 指定的列进行升序排序,并取前N行数据;

lis_dic2 = {'offerId':[12078,18379,1817,999],'click':[1663,18492024,6379911,1000],
}
pd2 = pd.DataFrame(lis_dic2)
pd3 = pd2.nsmallest(2,'click')

2.4.3   按条件查询:

          方式1: pd3 =pd2.loc[ 查询条件 ]

          方式2: pd2.query(查询条件)

lis_dic2 = {'offerId':[12078,18379,1817,999],'click':[1663,18492024,6379911,1000],
}
pd2 = pd.DataFrame(lis_dic2)
pd3 =pd2.loc[(pd2['click'] >1500)& (pd2['click'] < 6379912)]
pd4 = pd2.query('click > 1500 & click< 6379912')

2.4.4   分组聚合

     方式1:pd2.groupby(列标签,···). 列标签 . 聚合函数()

    按指定列分组,并对分组数据的相应列进行相应的聚合操作;

     

lis_dic2 = {'offerId':[12078,18379,1817,999],'click':[1663,18492024,6379911,1000],'sex':['A','B','A','B']
}
pd2 = pd.DataFrame(lis_dic2)
#  安装sex 字段分组, 求 ‘click’字段平均值
pd4 = pd2.groupby('sex').click.mean()

     方式2:pd2.groupby(列标签,···).agg({'列标签':'聚合函数()',······})

     按指定列分组,并对分组数据的相应列进行相应的聚合操作

   

lis_dic2 = {'offerId':[12078,18379,1817,999],'click':[1663,18492024,6379911,1000],'sex':['A','B','A','B']
}
pd2 = pd.DataFrame(lis_dic2)
# #  安装sex 字段分组, 求 'offerId'的个数 和 ‘click’字段平均值
pd3 = pd2.groupby('sex').agg({'offerId':'count','click':'mean'})

2.5 排序

2.5.1   将DataFrame 按照指定列的数据进行排序;ascending=False,降序,True,升序;

            pd2.sort_values(by='列标签',ascending=False)

lis_dic2 = {'offerId':[12078,18379,1817,999],'click':[1663,18492024,6379911,1000],'sex':['A','B','A','B']
}
pd2 = pd.DataFrame(lis_dic2)
# 排序
pd3 = pd2.sort_values('click',ascending=False)

2.5.2  将DataFrame 按照行标签进行排序;ascending=False,降序,True,升序;

           pd2.sort_index(ascending=True)

lis_dic2 = {'offerId':[12078,18379,1817,999],'click':[1663,18492024,6379911,1000],'sex':['A','B','A','B']
}
pd2 = pd.DataFrame(lis_dic2)
# 排序
pd4 = pd2.sort_index(ascending=True)

相关文章:

学习 使用pandas库 DataFrame 使用

1 、 数据排序 sort_values()函数 by:要排序的名称或名称列表&#xff0c; sorted_df df.sort_values(byAge,ascendingFalse) 由大到小排序&#xff1b; sorted_df df.sort_values(byAge) 由小到大排序&#xff1b; # 创建一个示例数据帧 data {Name: [Tom, Nick, John…...

C++字符串详解

C 大大增强了对字符串的支持&#xff0c;除了可以使用C风格的字符串&#xff0c;还可以使用内置的 string 类。string 类处理起字符串来会方便很多&#xff0c;完全可以代替C语言中的字符数组或字符串指针。 string 是 C 中常用的一个类&#xff0c;它非常重要&#xff0c;我们…...

vant2 van-calendar组件增加清除按钮和确定按钮

利用自定义插槽增加一个清除按钮 <van-calendar ref"fTime1" select"selectTimePicker" confirm"changeTimePicker" :default-date"null" :show-confirm"false" v-model"timePickerShow" type"range&quo…...

Spring redis使用报错Read timed out排查解决

文章目录 使用场景报错信息解决方式 使用场景 我们使用redis作为缓存服务&#xff0c;缓存一些业务数据&#xff0c;如路口点位信息、渠化信息、设备信息等有一些需要实时计算的数据&#xff0c;缓存在redis里&#xff0c;如实时信号周期相位、周期内过车数量等有需要不同服务…...

C语言每日一练-------Day(9)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;字符个数统计 多数元素 投票法 &#x1f493;博主csdn个人主页&#xf…...

SpringCloud(十)——ElasticSearch简单了解(三)数据聚合和自动补全

文章目录 1. 数据聚合1.1 聚合介绍1.2 Bucket 聚合1.3 Metrics 聚合1.4 使用 RestClient 进行聚合 2. 自动补全2.1 安装补全包2.2 自定义分词器2.3 自动补全查询2.4 拼音自动补全查询2.5 RestClient 实现自动补全2.5.1 建立索引2.5.2 修改数据定义2.5.3 补全查询2.5.4 解析结果…...

二叉查找树(binary search tree)(难度7)

C数据结构与算法实现&#xff08;目录&#xff09; 答案在此&#xff1a;二叉查找树&#xff08;binary search tree&#xff09;&#xff08;答案&#xff09; 写在前面 部分内容参《算法导论》 基本接口实现 1 删除 删除值为value的第一个节点 删除叶子节点1 删除叶子节…...

windows环境装MailHog

背景&#xff1a;win10系统&#xff0c;windows 宝塔&#xff0c;laravel 项目&#xff0c;邮件相关需要装一个MailHog 下载地址&#xff1a;https://sourceforge.net/projects/mailhog.mirror/ 直接下载&#xff0c;下载后双击运行就可以了&#xff0c;系统可能提示”不信任“…...

Ubuntu 22.04.2 LTS 安装python3.6后报错No module named ‘ufw‘

查明原因&#xff1a; vim /usr/sbin/ufw 初步判断是python版本的问题。 # 查看python3软链接 ll /usr/bin/python3 将python3的软链接从python3.6换成之前的3.10&#xff0c;根据自己电脑情况。 可以查看下 /usr/bin 下有什么 我这是python3.10 所以解决办法是 # 移除py…...

Flutter小功能实现-咖啡店

1 导航栏实现 效果图&#xff1a; 1.Package google_nav_bar: ^5.0.6 使用文档&#xff1a; google_nav_bar | Flutter Package 2.Code //MyBottomNavBar class MyBottomNavBar extends StatelessWidget {void Function(int)? onTabChange;MyBottomNavBar({super.key, …...

JavaSE 集合框架及背后的数据结构

目录 1 介绍2 学习的意义2.1 Java 集合框架的优点及作用2.2 笔试及面试题 3 接口 interfaces3.1 基本关系说明3.2 Collection 常用方法说明3.3 Collection 示例3.4 Map 常用方法说明3.5 Map 示例 4 实现 classes5 Java数据结构知识体系5.1 目标5.2 知识点 1 介绍 集合&#xf…...

-9501 MAL系统没有配置或者服务器不是企业版(dm8达梦数据库)

dm8达梦数据库 -9501 MAL系统没有配置或者服务器不是企业版&#xff09; 环境介绍1 环境检查2 问题原因 环境介绍 搭建主备集群时&#xff0c;遇到报错-9501 MAL系统没有配置或者服务器不是企业版 1 环境检查 检查dmmal.ini配置文件权限正确 dmdba:dinstall&#xff0c;内容正…...

云备份——第三方库简单介绍并使用(上)

目录 一&#xff0c;Jsoncpp库序列化和反序列化 二&#xff0c;bundle文件压缩库 2.1 文件压缩 2.2 文件解压 一&#xff0c;Jsoncpp库序列化和反序列化 首先我们需要先了解一下json是什么&#xff0c;json是一种数据交换格式&#xff0c;采用完全独立于编程语言的文本格式来…...

MySQL数据库之索引

目录 一、索引的概念 二、索引的作用 三、索引的副作用 四、创建索引的规则 1、适合创建为索引的字段的规则 2、MySQL的优化 哪些字段/场景适合创建索引&#xff0c;哪些不适合 五、索引的分类和创建 1、索引的分类 2、三种创建方式 3、索引的创建演示 1、创建普通索…...

OpenCV(四):Mat支持的运算

目录 1.对两个 Mat 对象按元素进行运算&#xff0c;有加法、减法、乘法和除法等运算。 2.Mat类支持逻辑与、或、非等逻辑运算&#xff0c; 1.对两个 Mat 对象按元素进行运算&#xff0c;有加法、减法、乘法和除法等运算。 加法&#xff1a;Mat Mat&#xff0c;保存到 resul…...

WebRTC音视频通话-WebRTC推拉流过程中日志log输出

WebRTC音视频通话-WebRTC推拉流过程中日志log输出 之前实现iOS端调用ossrs服务实现推拉流流程。 推流&#xff1a;https://blog.csdn.net/gloryFlow/article/details/132262724 拉流&#xff1a;https://blog.csdn.net/gloryFlow/article/details/132417602 在推拉流过程中的…...

用Jmeter压测问题解决

最近做一个基于duboo服务的接口&#xff0c;需要进行稳定性测试。但是用Jmeter GUI 方式跑只能持续2个小时左右&#xff0c;Jmeter就崩溃了&#xff0c;日志报错&#xff1a;out of memory 解决方法如下&#xff1a; 直接运行jmeter的java包试试&#xff1a; 1、打开jmeter.…...

C语言:字符函数和字符串函数(一篇拿捏字符串函数!)

目录 求字符串长度&#xff1a; 1. strlen(字符串长度) 长度不受限制函数&#xff1a; 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数&#xff1a; 5. strncpy(字符串拷贝) 6. strncat(字符串追加) 7. strncmp(字符串比较) 字…...

问道管理:成交量买卖公式?

跟着股票商场的如火如荼&#xff0c;人们对于怎么解读和使用成交量进行股票生意的需求日积月累。成交量是指在某一特定时间内进行的股票生意的数量&#xff0c;它是投资者们研判商场状况和制定生意战略的重要指标之一。那么&#xff0c;是否存在一种最厉害的成交量生意公式呢&a…...

【MySQL】5、MySQL高阶语句

一、常用查询&#xff08;增、删、改、查&#xff09; 对 MySQL 数据库的查询&#xff0c;除了基本的查询外&#xff0c;有时候需要对查询的结果集进行处理。 例如只取 10 条数据、对查询结果进行排序或分组等等 模板表&#xff1a; 数据库有一张info表&#xff0c;记录了学生…...

【3步修复】华硕游戏本色彩配置文件丢失解决方案

【3步修复】华硕游戏本色彩配置文件丢失解决方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, and other mo…...

2.4.快速排序——先分区再递归,为什么它平均这么快却可能退化?

2.4.快速排序——先分区再递归&#xff0c;为什么它平均这么快却可能退化&#xff1f; 系列&#xff1a;搜索与排序 | 第 4 篇&#xff0c;共 16 篇 难度&#xff1a;⭐⭐⭐☆☆ 中等 标签&#xff1a;排序 快速排序 分治 随机化 三路快排 上一篇&#xff1a;2.3.插入排序——像…...

5分钟掌握ImStudio:免费高效的实时GUI布局设计终极方案

5分钟掌握ImStudio&#xff1a;免费高效的实时GUI布局设计终极方案 【免费下载链接】ImStudio Real-time GUI layout designer for Dear ImGui 项目地址: https://gitcode.com/gh_mirrors/im/ImStudio 你是否曾经为调试用户界面而反复编译代码&#xff1f;是否厌倦了在代…...

终极指南:Spinnaker资源生命周期管理的完整流程与最佳实践

终极指南&#xff1a;Spinnaker资源生命周期管理的完整流程与最佳实践 【免费下载链接】spinnaker Spinnaker is an open source, multi-cloud continuous delivery platform for releasing software changes with high velocity and confidence. 项目地址: https://gitcode.…...

COMSOL 流固共轭传热拓扑优化:解锁高效液冷流道设计

COMSOL流固共轭传热拓扑优化 流固共轭传热为同时包含传导、对流的流热耦合场问题&#xff0c;流固共轭传热的拓扑优化技术通常应用于复杂液冷流道的设计&#xff0c;常见于微通道散热器的设计 使用COMSOL软件搭建拓扑优化流程&#xff0c;实现流道流阻小&#xff0c;换热量大等…...

SimWorks FDTD仿真结果可视化:从监视器数据到专业图表,手把手教你避开插值陷阱

SimWorks FDTD仿真结果可视化&#xff1a;从监视器数据到专业图表&#xff0c;手把手教你避开插值陷阱 电磁仿真工程师们常遇到这样的困境&#xff1a;明明仿真设置无误&#xff0c;计算结果却与预期存在微妙差异。问题的根源往往不在仿真过程本身&#xff0c;而在于后处理阶段…...

AI技术原理--AI上下文窗口:为什么AI没有真正的记忆

99%的人都理解错了一个问题&#xff1a;AI真的会记得你吗&#xff1f; 很多人信誓旦旦跟我说&#xff1a;昨天我跟GPT聊了好久&#xff0c;今天一打开还能接着聊&#xff0c;这不是记忆是什么&#xff1f; 但如果我告诉你&#xff0c;它根本就不记得你——你是不是直接懵了&…...

基于朴素贝叶斯分类算法的收入预测:Python 数据挖掘项目实战

数据挖掘项目python--基于朴素贝叶斯分类算法的收入预测 项目流程&#xff1a;数据分析训练朴素贝叶斯分类器两个方案实现&#xff08;pycharmjupyter&#xff09; 包含内容&#xff1a;数据集代码&#xff08;pycharmjupyter&#xff09;文档在数据挖掘领域&#xff0c;预测任…...

memtest_vulkan显存检测终极指南:从问题识别到健康管理

memtest_vulkan显存检测终极指南&#xff1a;从问题识别到健康管理 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 一、显存故障问题识别&#xff1a;图形渲染异…...

网站 SEO 软件如何提高网站流量

了解网站 SEO 软件的重要性 在当今互联网时代&#xff0c;网站流量的重要性不言而喻。无论你经营的是一个电子商务网站&#xff0c;博客&#xff0c;还是企业官方网站&#xff0c;高流量意味着更多的曝光和潜在客户。如何有效地提高网站流量呢&#xff1f;这里&#xff0c;我们…...