当前位置: 首页 > 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;记录了学生…...

【Linux】redhat7.8配置yum在线源【redhat7.8镜像容器内配置yum在线源】通用

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…...

强大的处理器和接口支持BL304ARM控制器

在智慧医疗领域&#xff0c;BL304可以用于实现医疗设备的智能化、远程监控和数据交换。在智慧电力领域&#xff0c;BL304可以帮助实现电网的智能化管理&#xff0c;提升电力供应的效率。在智慧安防领域&#xff0c;BL304可以实现智能监控、智能门锁等应用&#xff0c;保障安全。…...

react 基础知识(一)

1、 安装1 &#xff08;版本 react 18&#xff09; // 安装全局脚手架&#xff08;create-react-app基于webpackes6&#xff09; npm install -g create-react-app //使用脚手架搭建项目 create-react-app my-app // 打开目录 cd my-app // 运行项目 npm start2、初体验 impo…...

SpringBoot整合JUnit、MyBatis、SSM

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 SpringBoot整合 一、SpringBoot整合JUnit二、Spri…...

virtuoso61x中集成calibre

以virtuoso618为例&#xff0c;在搭建完电路、完成前仿工作之后绘制版图&#xff0c;版图绘制完成之后需要进行drc和lvs【仅对于学校内部通常的模拟后端流程而言】&#xff0c;一般采用mentor的calibre来完成drc和lvs。 服务器上安装有virtuoso和calibre&#xff0c;但是打开la…...

com.google.guava:guava 组件安全漏洞及健康分析

组件简介 维护者google组织许可证类型Apache-2.0首次发布2010 年 4 月 26 日最新发布时间2023 年 8 月 1 日GitHub Star48189GitHub Fork10716依赖包28,694依赖存储库219,576 Guava 是 Google 的一组核心 Java 库&#xff0c;其中包括新的集合类型&#xff08;例如 multimap 和…...

Hadoop服务脚本

#!/bin/bash process("NameNode" "SecondaryNameNode" "DataNode" "NodeManager" "ResourceManager") JAVA_HOME"/opt/software/jdk1.8.0_371" HADOOP_HOME"/opt/software/hadoop-3.3.6"# 定义颜色的AN…...

[QT]设置程序仅打开一个,再打开就唤醒已打开程序的窗口

需求&#xff1a;speedcrunch 这个软件是开源的计算器软件。配合launch类软件使用时&#xff0c;忘记关闭就经常很多窗口&#xff0c;强迫症&#xff0c;从网上搜索对版本进行了修改。 #include "gui/mainwindow.h"#include <QCoreApplication> #include <…...

数据库(二) Oracle篇

Oracle SQL常用函数 概述 SQL函数有单行函数和多行函数,其区别为&#xff1a; 单行&#xff1a;输入一行,返回一行,如字符、数字、转换、通用函数等多行&#xff1a;输入多行,返回一行,也称为分组函数、组函数、聚合函数,且多行函数会自动滤空 单行函数 字符函数 CONCAT(…...

TDengine函数大全-目录

TDengine函数大全 详情见具体页面&#xff0c;点击进入。 1.数学函数 ABSACOSASINATANCEILCOSFLOORLOGPOWROUNDSINSQRTTAN 2.字符串函数 CHAR_LENGTHCONCATCONCAT_WSLENGTHLOWERLTRIMRTRIMSUBSTRUPPER 3.转换函数 CAST TO_ISO8601TO_UNIXTIMESTAMPTO_JSON 4.时间和日期…...