学习 使用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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/99670.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【附安装包】Eplan2022安装教程

软件下载 软件&#xff1a;Eplan版本&#xff1a;2022语言&#xff1a;简体中文大小&#xff1a;1.52G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.5GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨64位下载链接&#xff1a;https://pan.baidu.co…

ActiveMQ配置初探

文章目录 配置wrapper相关配置wrapper是干什么用的MQ的运行内存修改【需修改】修改内容题外话 wrapper.log配置【需修改】引起的问题优化方式 activemq.xml相关配置官网介绍配置管理后台的认证授权【建议修改】配置broker【根据自己需求更改】配置允许jmx监控关闭消息通知持久化…

ubuntu学习(五)----读取文件以及光标的移动

1、读取文件函数原型介绍 ssize_t read(int fd,void*buf,size_t count) 参数说明&#xff1a; fd: 是文件描述符 buf:为读出数据的缓冲区&#xff1b; count: 为每次读取的字节数&#xff08;是请求读取的字节数&#xff0c;读上来的数据保存在缓冲区buf中&#xff0c;同时文…

基于飞桨图学习框架的空间异配性感知图神经网络

本期文章将为大家分享飞桨社区开发者肖淙曦、周景博发表于数据挖掘顶会KDD2023的论文《Spatial Heterophily Aware Graph Neural Networks》。 肖淙曦 肖淙曦&#xff0c;百度研究院商业智能实验室研究实习生&#xff0c;中国科学技术大学在读博士生&#xff0c;主要从事时空…

CSC7203S 应用注意事项

CSC7203S 为高性能电流模式 PWM 开关电源功率转换器&#xff0c;满足绿色环保标准&#xff1b;广泛适用于经济型开关电源&#xff0c;如 DVD、机顶盒、传真机、打印机、LCD 显示器等。CSC7203S采用SOP-8封装。  内置 700V 高压功率开关管  输入电压&#xff08;85V~265V&a…

【Apollo学习笔记】——规划模块TASK之PATH_ASSESSMENT_DECIDER

文章目录 前言PATH_ASSESSMENT_DECIDER功能简介PATH_ASSESSMENT_DECIDER相关信息PATH_ASSESSMENT_DECIDER总体流程1. 去除无效路径2. 分析并加入重要信息给speed决策SetPathInfoSetPathPointType 3. 排序选择最优的路径4. 更新必要的信息 前言 在Apollo星火计划学习笔记——Ap…

时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测

时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测 目录 时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测&a…

SQL Server开启变更数据捕获(CDC)

一、CDC简介 变更数据捕获&#xff08;Change Data Capture &#xff0c;简称 CDC&#xff09;&#xff1a;记录 SQL Server 表的插入、更新和删除操作。开启cdc的源表在插入、更新和删除操作时会插入数据到日志表中。cdc通过捕获进程将变更数据捕获到变更表中&#xff0c;通过…

【校招VIP】产品面试之面试官的真实意图

考点介绍&#xff1a; 大厂面试时&#xff0c;面试官提出的问题除了了解经历和想法外&#xff0c;最看重的是思维逻辑能力、团队协作能力和协调能力。 『产品面试之面试官的真实意图』相关题目及解析内容可点击文章末尾链接查看&#xff01; 一、考点题目 1. 你遇到的最大的…

复杂性分析与算法设计:解锁计算机科学的奥秘

文章目录 算法复杂性分析的基本概念时间复杂度空间复杂度 常见的算法设计策略1. 分治法2. 贪心法3. 动态规划 算法设计的实际应用1. 网络路由2. 图像处理3. 人工智能 算法的选择和性能分析结论 &#x1f389;欢迎来到数据结构学习专栏~复杂性分析与算法设计&#xff1a;解锁计算…

linux中安装nodejs,卸载nodejs,更新nodejs,git,linux中安装nginx并配置

文章目录 node的安装与卸载&#xff08;更新版本&#xff09;卸载nodejs安装新版本node git安装与拉取代码安装解决 linux git 每次推拉(push/pull)代码都要输入用户名密码的问题 nginx 安装、配置和卸载安装nginx配置**.conf 文件内容 nginx 卸载 注意&#xff0c;我的是Ubunt…

buildAdmin的使用笔记

安装buildAdmin 下载完整包&#xff0c;解压进入 buildadmin 的文件夹&#xff0c; 输入命令 composer install 启动的时候使用&#xff0c; php think run 就可以了 为什么启动只需要&#xff0c; php think run 这种启动方式&#xff0c; 我是头一回看见 &#xff0c;后来才…

css-伪类:not实现列表最后一项没有样式

有了&#xff1a;not这个选择符&#xff0c;那么你将可以很好的处理类似这样的场景&#xff1a;假定有个列表&#xff0c;每个列表项都有一条底边线&#xff0c;但是最后一项不需要底边线。 示例&#xff1a; html: <ul><li>111111111111</li><li>21…

十二、集合(2)

本章概要 添加元素组集合的打印列表 List 添加元素组 在 java.util 包中的 Arrays 和 Collections 类中都有很多实用的方法&#xff0c;可以在一个 Collection 中添加一组元素。 Arrays.asList() 方法接受一个数组或是逗号分隔的元素列表&#xff08;使用可变参数&#xff…

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉农大图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉农大图书馆

百万级并发IM即时消息系统(3)配置数据初始化和前后端交互

04_配置数据初始化及前后端交互_哔哩哔哩_bilibili 1.配置文件 创建一个config文件夹以及一个app.yaml配置文件。 该文件专门存放一些关键配置&#xff0c;如mysql DNS路径和redis的addr账号密码等。 后期可以创建一个工具包和一些初始化方法&#xff0c;专门用来加载这些配…

C++、C#、JAVA 、 DELPHI、VB各个程序的优缺点你知道吗?

每种编程语言都有自己的优势和缺点&#xff0c;以下是对C、C#、Java、Delphi和VB的一些常见评价&#xff1a;C:优势&#xff1a;高性能、灵活性和可移植性强&#xff0c;适合对性能要求高的应用&#xff0c;可以进行系统级编程和嵌入式开发。缺点&#xff1a;语法复杂&#xff…

亚马逊云科技 re:Inforce 大会云安全合规与技术实践及 Security Jam 大赛,快来报名吧!...

‍‍ 2023年8月31日在北京 亚马逊云科技 re:Inforce 大会 首次登陆中国&#xff01; 我们期待您的莅临&#xff0c; 并与您一起迎接 AI 时代&#xff0c; 开启全面智能的安全旅程&#xff01; 在13:00-17:00的 培训与动手实验环节中 云安全合规与技术实践 及 Security Jam 大赛…

使用Spring Boot和Kafka实现消息发送和订阅

文章目录 一&#xff0c;新建Spring Boot1&#xff0c;Maven配置2&#xff0c;无法识别为SpringBoot项目3&#xff0c;无效的源发行版4&#xff0c;无法访问SpringApplication5&#xff0c;运行直接Finish6&#xff0c;服务运行成功 二&#xff0c;安装启动Kafka1&#xff0c;下…

2023年05月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;问题求解 给定一个正整数N&#xff0c;求最小的M满足比N大且M与N的二进制表示中有相同数目的1。 举个例子&#xff0c;假如给定N为78&#xff0c;二进制表示为1001110&#xff0c;包含4个1&#xff0c;那么最小的比N大的并且二进制表示中只包含4个1的数是83&a…
最新文章