5 min read

技术:Python接口函数

技术 系列导航

1 技术:Poisson分布、回归Python实现 2017-12-20
2 技术:beta系数理解 2017-12-21
3 技术:Python List剔除重复值 2017-12-21
4 技术:t-SNE处理高维数据可视化 2017-12-21
5 技术:用R语言进行文件系统管理 2017-12-21
6 技术:fct_lump分箱使用方法 2017-12-22
7 技术:F1分数为什么可以看不平衡样本的预测能力 2017-12-27
8 技术:Fisher的一个矩阵预算 2017-12-27
9 技术:case_when使用方法 2017-12-28
10 技术:fct_relevel调整对照组,批量的方案 2017-12-30
11 技术:python中变量批量处理集成方案 2017-12-30
12 技术:Python接口函数-中台 2018-01-03
13 技术:使用pbd包进行debug 2018-01-03
14 技术:R实现随机分组 2018-01-04
15 技术:jiebaR包做文本清洗 2018-01-05
16 技术:r_WACC使用说明 2018-01-05
17 技术:使用switchhost安装host 2018-01-05
18 技术:Git的下载问题 2018-01-06
19 技术:新闻爬虫 2018-01-07
20 技术:Scalable Data Processing in R 2018-01-08
21 技术:使用git创建一个自己的本地仓库 2018-01-11
22 技术:dashboard构建,来自yihui的包 2018-01-12
23 技术:最大似然估计再理解 2018-01-12
24 技术:itchat包提取微信好友公开数据 2018-01-13
25 技术:do函数和biglm包 2018-01-17
26 技术:Imputer后X少了一列 2018-01-18
27 技术:mac连接mysql,理论上win7也可以 2018-01-19
28 技术:ggpubr提高作图效率 2018-01-20
29 技术:t-SNE理论部分补充 2018-01-22
30 技术:RMarkdown的使用技巧 2018-01-30
31 技术:通过anova检验,理解R2、R_adj.2、F值 2018-01-31
32 技术:ggridges 山峦图 学习笔记 2018-02-02
33 技术:Tidyverse使用技巧 2018-02-02
34 技术:XGBoost 学习笔记 2018-02-02
35 技术:分布变离散,或者纠正skew 2018-02-02
36 技术:rsq在R中自定义函数 2018-02-03
37 技术:Jupyter实战 2018-02-13
38 技术:美化与定制 2018-02-21
39 技术:数据对比可视化指南 2018-02-22
40 技术:功能体验 2018-02-26
41 技术:高效数据处理 2018-02-27
42 技术:模型优化技巧 2018-03-05
43 技术:原理与应用 2018-03-06
44 技术:模型与可视化 2018-03-08
45 技术:美化与交互指南 2018-03-11
46 技术:高效操作指南 2018-03-14
47 技术:用法与优化技巧 2018-03-17
48 技术:效率提升指南 2018-03-18
49 技术:问题排查技巧 2018-03-18
50 技术:高效操作指南 2018-03-19
51 技术:方法与代码示例 2018-03-21
52 技术:进阶技巧与优化 2018-03-21
53 技术:实战示例 2018-03-22
54 技术:效率与规范指南 2018-03-24
55 技术:dplython包测评 2018-03-25
56 技术:原理与实现 2018-04-02
57 技术:原理与应用解析 2018-04-03
58 技术:实战指南 2018-04-05
59 技术:核心语法与函数整理 2018-04-05
60 技术:复利计算与应用 2018-04-08
61 技术:简单规则模型解析 2018-04-14
62 技术:高效代码设计指南 2018-04-25
63 技术:原理与应用学习笔记 2018-04-29
64 技术:实战指南 2018-04-29
65 技术:原理与应用 2018-05-01
66 技术:表格格式化指南 2018-05-02
67 技术:原理与应用介绍 2018-05-08
68 技术:高效文本拼接 2018-05-11
69 技术:方法与实践学习笔记 2018-05-12
70 技术:方法与工具 2018-05-12
71 技术:功能解析 2018-05-17
72 技术:高效数据输入 2018-05-21
73 技术:基础模型与方法 2018-05-22
74 技术:功能与使用体验 2018-05-26
75 技术:特征筛选学习笔记 2018-05-29
76 技术:实战技巧 2018-05-30
77 技术:建模思路解析 2018-06-03
78 技术:策略与实战 2018-06-03
79 技术:数据展示指南 2018-06-04
80 技术:包与环境配置指南 2018-07-14
81 技术:高效操作指南 2018-07-19
82 技术:方法与案例解析 2018-07-24
83 技术:统计建模学习笔记 2018-07-24
84 技术:展示技巧与原则 2018-08-10
85 技术:数据采集实战技巧 2018-08-21
86 技术:指标设计学习笔记 2018-09-20
87 技术:建模流程实战 2018-10-01
88 技术:大规模数据探索 2018-10-20
89 技术:文本提取与分析 2018-10-20
90 技术:原理与R实现实战 2018-10-21
91 技术:学习资源获取技巧 2018-10-23
92 技术:深度学习模型实战 2018-10-24
93 技术:实战指南 2018-10-30
94 技术:分析与展示指南 2018-11-03
95 技术:图片编辑与转换 2018-11-03
96 技术:安装与使用基础学习笔记 2018-11-07
97 技术:非结构化数据处理 2018-11-29
98 技术:表格美化技巧 2018-12-13
99 技术:分类数据可视化 2018-12-24
100 技术:流程图绘制技巧 2018-12-24
101 技术:自动化设置 2018-12-28
102 技术:协作与版本控制 2018-12-29
103 技术:pipeline设计 2018-12-30
104 技术:Git历史记录清理 2018-12-31
105 技术:AUC指标对比 2019-01-01
106 技术:时间序列可视化 2019-01-01
107 技术:变量命名工具指南 2019-01-02
108 技术:网页自动化截图 2019-01-02
109 技术:配置与优化 2019-01-03
110 技术:原理与应用 2019-01-07
111 技术:语法与核心概念 2019-01-14
112 技术:R包徽章设计 2019-01-15
113 技术:项目结构设计 2019-01-21
114 技术:文本分类基础任务 2019-01-22
115 技术:线性与非线性模型 2019-01-22
116 技术:有效性验证 2019-01-27
117 技术:评估与应用 2019-01-29
118 技术:循环神经网络入门 2019-01-30
119 技术:长短期记忆网络入门 2019-01-30
120 技术:for循环示例 2019-02-03
121 技术:基础到进阶 2019-02-06
122 技术:查询与整合 2019-02-06
123 技术:方法与案例 2019-02-14
124 技术:R包高效开发指南 2019-02-20
125 技术:解析与操作 2019-02-20
126 技术:训练与预测 2019-02-25
127 技术:原理与代码 2019-02-26
128 技术:GitHub个人访问令牌(PAT)设置 2019-03-04
129 技术:方法与工具 2019-03-07
130 技术:文本特征提取示例 2019-03-08
131 技术:基础任务示例 2019-03-18
132 技术:条形图与表头设计 2019-03-20
133 技术:连续与分类变量差异 2019-03-30
134 技术:思路与方法 2019-04-08
135 技术:方法与工具 2019-04-15
136 技术:多格式读取 2019-04-16
137 技术:方法与工具 2019-05-11
138 技术:Git/GitHub/GitLab 2019-05-13
139 技术:命令与操作 2019-05-19
140 技术:协作与版本控制 2019-05-26
141 技术:语法与实践 2019-06-28
142 技术:功能与API 2019-07-13
143 技术:安装与使用 2019-07-24
144 读《未来简史》:技术与未来 2019-09-14
145 技术:高效数据处理 2019-10-09
146 技术:性能优化技巧 2019-10-12
147 技术:配置与运维 2019-10-29
148 技术:原理与经典模型 2019-12-25
149 技术:构建到发布流程 2019-12-26
150 技术:方法与案例 2019-12-27
151 技术:命令与自动化 2019-12-30
152 技术:Pandas数据处理实战指南 2020-01-19
153 技术:特征工程之目标编码学习笔记 2020-01-20
154 技术:文档编写与美化 2020-01-28
155 技术:核心算法与应用 2020-01-29
156 技术:流程图绘制技巧 2020-01-29
157 技术:DataCamp课程笔记 2020-01-31
158 技术:Python实用代码片段合集 2020-01-31
159 技术:自动化构建流程 2020-02-02
160 技术:自动化工作流配置 2020-02-04
161 技术:高效查找代码与项目 2020-02-11
162 技术:代码环境快速部署 2020-02-24
163 技术:USD数据分析论文收录暨GitBook发布 2020-05-02
164 游记:西安博物院(5)西汉器物工艺到新莽技术应用 2020-10-01
165 技术:Causal Forest 2021-03-18
166 技术小团队人才培养思考:压力・复盘・沉淀 2024-05-21
167 BJ Fogg模型:从说服技术理论到行为设计实践 2024-11-24
168 管理视角:技术团队的核心交付是什么 2025-02-13
169 研读毛选:核心技术三大特征 2025-03-28

本文于2026-03-28更新。 如发现问题或者有建议,欢迎提交 Issue

#df_register = source_register(userids)
df_register = pd.read_pickle('C:/Users/Python_bc/baichuan_model/df_register')
df_register = df_register[df_register['userid'] == userid]

翻译sql的心得

  • left join 其实不麻烦,全部join起来,再处理 select 的变量。
  • 详单表翻译完一张后,热情和习惯来了,继续搞。
  • 表的逻辑需要一点点update问清楚。

source_register函数定义

# 所有的数据源
@data_source_logs()
def source_register(userids):
    """
    数据源: register, 获取ac渠道信息
    """
    df = user_ac_register_channel(userids)
    df = _default_columns(df, ['device', 'insert_time', 'reg_chanel', 'userid'])
    df.columns = ['device', 'inserttime', 'regchanel', 'userid']
    df = _to_datetime(df, ['inserttime'])
    return df

reg_chanel看到这种真的想打人。

装饰器解释

这里,@data_source_logs()是啥意思?

所以@是装饰器, 他的作用是记录日志。

from utils import data_source_logs找到你了!

def data_source_logs():
    """
    数据源日志的装饰器
    """
    def real_decorator(raw_fun):
        source_name = raw_fun.__name__
        def wrapper(*args, **kwargs):
            logger.info('开始获取数据源: %s ...' % source_name)
            try:
                df = raw_fun(*args, **kwargs)
                logger.info('数据源: %s 获取完成.' % source_name)
            except Exception as e:
                logger.error('数据源: %s 获取失败. 失败原因: %s' % (source_name, traceback.format_exc()))
                raise e
            return df
        return wrapper
    return real_decorator

总之一句话, 就是为了跑日志,告诉哪段代码跑完了。

找接口信息

user_ac_register_channel先搞清这个函数。

在这里from model.baichuan.itf.user_ac_register_channel import user_ac_register_channel

# encoding: utf-8

# 从接口获取ac 渠道注册信息
# 接口文档: http://userac.ppdapi.com:8083/swagger-ui.html
# 董长龙
# 测试环境: 172.17.3.24  userac.ppdapi.com
# 陈建

#################  输入示例  #############
# 输入: df_userid,类型为 dataframe, 主要包含两个字段: userid, listingtime

出现了接口信息了! 如果你看完了文档,你就觉得这个信息写的很详细了,真的,这是一个好的程序员写的。

这是我唯一的底气。

问题来了,这里的config['url_ac_register_channel']是啥意思?

import yaml
import os
import logging.config
import traceback
from model.baichuan.conf.logging_conf import logging_config

# 项目路径
bash_path = os.path.abspath(os.path.join(__file__, '../../'))

# 配置文件路径
config_path = os.path.join(bash_path, 'conf')

# 配置文件内容
config = yaml.load(open(os.path.join(config_path, 'config.yaml')))

这里是查询__file__, '../../'向上第二个路径。 反正就是说,来看看config.yaml这个文件。 这里面包含了陈建写的所以的接口信息,找起来方便。 如果需要切换成测试环境的接口,config.yaml config-dev.yamlC:\Users\lijiaxiang\Desktop\秉慧python代码\baichuan\conf\config.yaml中, url_ac_register_channel: http://userac.ppdapi.com/v2/useracregisterchannel/%(userid)s?appid=%(appid)s 因此就找到了这个接口,发现两个标签信息。

搞host

要搞host,这个时候一个用来配置接口的,一个用来读接口的。

switchhost找一下,这是个软件,作用如下。

需要切换host来访问到一个特定IP地址,那这个软件将帮你节省很多时间,高效率开发。

什么是hosts文件? 简单的说,hosts文件是用于本地dns服务(相关主题:什么是DNS缓存,如何清除DNS缓存?)的,采用ip 域名的格式写在一个文本文件当中,Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。

简单来说,有些网址登陆不上去,你需要配置一下,但是配置一下要来回切换,很麻烦,这个时候,就需要一个自动切换的软件,这就是SwitchHosts的功能之处,而且还可以自由切换,应该加个前缀Auto

安装好后,把接口信息粘贴上去。 ( SwtichHosts快速切换Host - CSDN博客 ) follow这里的思路, 然后拨动下左侧的按钮,变绿了,就是开始切换了。 这个时候就可以用浏览器访问网址了。

http://userac.ppdapi.com:8083/swagger-ui.html 这里的8083是测试环境,一般默认80,这也可以找例子。 config.yamlconfig-dev.yaml 里面,相似的,这个地方就是不一样,可以比较比较找找感觉,搞这些,内行看逻辑,我们外行看感觉吧。

因此总结一下,就是把 测试环境: 172.17.3.24 userac.ppdapi.com粘贴在SwitchHosts, 然后浏览器访问 http://userac.ppdapi.com:8083/swagger-ui.html 搞定!

然后阅读开发文档 首次接入,请先阅读 http://confluence.ppdai.com/pages/viewpage.action?pageId=10071880 这个开发文档很简单,主要包含三个信息

  • 访问链接
  • 接口host
  • 例子

就是说,如果搞不懂,下个postman,快递小哥在不动Python的情况下,也可以实现Python的能力。 这种能力就是input标签,最后返回字段。

postman

config.yaml 打开这个文档,这个文档记录了所有的接口。

#  desc: 获取 ppdai_audit..preAudit 表的数据
#  doc: http://confluence.ppdai.com/pages/viewpage.action?pageId=9382058
url_pre_audit: http://queryapi.listings.ppdaicorp.com/listLoanService/getPreAuditList

preaudit开始搞起来。

对这个文件查询,

因此打开postman,选择POST,粘贴网址, http://queryapi.listings.ppdaicorp.com/listLoanService/getPreAuditList , 打开Body, 选择raw 选择JSON格式, 输入我们想要的测试的用户。 applicationId这个就是权限,没有就撸不到数据,是陈建部门的代码。

请求参数

  • applicationId: 不能都为空
  • borrowerId: 不能都为空
  • listingId:不能都为空

然后在hostman中找到了结果。

{
    "result": 1,
    "resultMessage": "没有查询到满足条件的数据",
    "itemList": null
}

Python中执行

迅速找到preAudit的构建函数。

C:\Users\lijiaxiang\Desktop\秉慧python代码\baichuan\itf\preaudit.py

    headers = {"Content-type": "application/json", "Accept": "application/json"}
    timeout = 10
    data = {
        'applicationId': ,
    }

这些都不需要改,header不想解释,永远不会知道。 timeout延迟时间,容忍度。 applicationId陈建的番号。

    data = json.dumps(data)
    response = requests.post(url, data, headers=headers, timeout=timeout).text
    response = json.loads(response)

骚操作在这,等价于postman。 因为这是POST的格式,因此打法是json.dumps(data)data有啥呢?

    data = {
        'applicationId': ,
    }
    if borrowerid is not None:
        data['borrowerId'] = borrowerid
    if listingid is not None:
        data['listingId'] = listingid

别忘了,import json

import json
headers = {"Content-type": "application/json", "Accept": "application/json"}
timeout = 10
url = 'http://queryapi.listings.ppdaicorp.com/listLoanService/getPreAuditList'
data = {
    'applicationId': ,
    'borrowerId': 1,
    'listingId': 1111
}
data = json.dumps(data)
response = requests.post(url, data, headers=headers, timeout=timeout).text
response = json.loads(response)
print(response)

模拟的用户数据输入好了。

结果出来了,

{'result': 1, 'resultMessage': '没有查询到满足条件的数据', 'itemList': None}


写接口函数

这里是最重要的了,前面的重要只有5%,这里是95%,因此是在创新。

打开笔记,看看要写哪些接口。

  • ods.ppdai_new_invest_extend_paimoneyrecords: ppdai_new_invest_extend.paimoneyrecords
  • ods.zmxy_score: ppdai_user_third_data.zmxy_score
  • ods.mobileapps 宋昉
  • ods.ppdai_user_log_userupdateinfologs: ppdai_user_log.userupdateinfologs

先搞最烦的,宋昉和何岳的。

通过userid入库时间查询用户mobileApps信息的接口是: /rest/getAppsByUserIdAndTime

卧槽,这个怎么拿app数据啊,我到底线下表怎么搞来着? appcompany like '%tencent%' and appcompany like '%weixin%' 因此也是抓取的。 没关系,我们试一试。 5786718用一个userid来做例子。

172.17.4.82, readapp.ppdapi.com找好了。

所以还差一个调用的链接。

就是readapp.ppdapi.com + /rest/getAppsByUserIdAndTime, 看了下写的例子:

{
    "userId":346,
    "guId":"hgahahah",
    "startDate":"2015-06-01 00:00:00",
    "endDate":"2017-06-01 00:00:00"
}

注意啊,/rest/getAppsByUserIdAndTime前面的POST不要乱加。

现在尝试在Python里面实现。

"guId":"hgahahah"这个可以没有啊! 何岳跟我说,guID用工程名称。

import json
import pandas as pd
def mobileapps(userId=None):
    headers = {"Content-type": "application/json", "Accept": "application/json"}
    timeout = 10
    url = "http://readapp.ppdapi.com/rest/getAppsByUserIdAndTime"
    data = {
            "userId":userId,
            # "guId":guId, 不需要
            "startDate":"2017-01-01 00:00:00",
            "endDate":"2017-06-01 00:00:00"
        }
    data = json.dumps(data)
    response = requests.post(url, data, headers=headers, timeout=timeout).text
    response = json.loads(response)
    df = pd.DataFrame(response)
    df = df[['AppCompany','InsertTime','UserId']]
    if not df.empty:
        df.columns = map(lambda x: x.lower(), df.columns)
    else:
        all_columns=['appcompany', 'inserttime', 'userid']
        df = pd.DataFrame(columns=all_columns)
    return df

if __name__ == '__main__':
    a = mobileapps(userId=346)#, listingids=[100076, 105709, 105890, 106452])
    #a = preaudit(16981)
    print(a)

第一个终于写好了!!!

之后就撸吧!


ListingAutoFlowSysProcess

import json
import pandas as pd
headers = {"Content-type": "application/json", "Accept": "application/json"}
timeout = 100
url = "http://loansd.ppdapi.com/Lightning/QueryService/QueryListingAutoFlowSysProcess"
data = {
    "UserIds":[24739192,24739203],
    "Amounts":[8000] 
}
data = json.dumps(data)
response = requests.post(url, data, headers=headers, timeout=timeout).text
response = json.loads(response)
# df = pd.DataFrame(response)
response.items()
# pd.DataFrame(response.items())
# df = pd.DataFrame.from_dict(response)
# df.head()
# 文档: http://confluence.ppdai.com/pages/viewpage.action?pageId=10881075
# 测试环境: 172.17.3.9 loansd.ppdapi.com

#default_url = 'http://loansd.ppdapi.com/Lightning/QueryService/QueryListingAutoFlowUserProcess'

首先配置好接口,然后写Python。

import json
import pandas as pd
headers = {"Content-type": "application/json", "Accept": "application/json"}
timeout = 100
url = "http://loansd.ppdapi.com/Lightning/QueryService/QueryListingAutoFlowUserProcess"

起手定义好要用的包、headers、timeout和接入api。

定义好要取用的userid向量。

data = {
    "UserIds":[24739192,24739203]
}

因为response的结果是一个字典,字典的第一个value是字典,其他我们都不需要,因此提取第一个value,然后转pd.DataFrame,就friendly read了。

data = json.dumps(data)
response = requests.post(url, data, headers=headers, timeout=timeout).text
response = json.loads(response)['Result']

对了json.loads(response)['Result']list格式,机智的一笔。

全部代码如下:

import json
import pandas as pd
headers = {"Content-type": "application/json", "Accept": "application/json"}
timeout = 100
url = "http://loansd.ppdapi.com/Lightning/QueryService/QueryListingAutoFlowUserProcess"
data = {
    "UserIds":[24739192,24739203]
}
data = json.dumps(data)
response = requests.post(url, data, headers=headers, timeout=timeout).text
response = json.loads(response)['Result']
# type(response)
df = pd.DataFrame(response)
# response.items()
# pd.DataFrame(response.items())
# df = pd.DataFrame.from_dict(response)
df.head()

ods.zmxy_score

172.17.4.983rdreadapi.ppdapi.com 找到了!

dict通过json.dumps转化 就成了json

这个appid要是appid有误,只能找业务提供方了,陈建也没办法。

import json
import pandas as pd
import requests
headers = {"Content-type": "application/json", "Accept": "application/json"}
timeout = 10
url = "http://3rdreadapi.ppdapi.com/queryData"
data = {

    "appid": "",

    "userid": "50070214",

    "options": "zhimaquery",

    "version": "1.0.0",

    "async": "1",

    "atom": 0,

    "role": 0

}
data = json.dumps(data)
response = requests.post(url, data, headers=headers, timeout=timeout).text
response = json.loads(response)
response
{'code': 0,
 'data': {'zhimaquery': {'bizNo': 'ZM201702153000000217600651746412',
   'id': 7667,
   'inserttime': '2018-01-02 11:21:17',
   'isactive': 1,
   'score': ,
   'updatetime': '2018-01-02 11:21:17',
   'userid': 50070214}},
 'message': 'success',
 'version': None}

sql问题

def get_commondaily(userid, engine=engine_cbd):
    mod = userid % 10
    sql = '''
    select 
        user_id, cmstr_reg_channl, cmstr_sec_lev, cmstr_idnm_gen, cmstr_idnm_age,
        cmstr_idnm_dst, cmstr_idnm_pro, cmstr_idnm_city, cmstr_pho_pro, 
        cmstr_pho_cit, cmstr_pho_cit_lev, cmstr_pho_opr, cmstr_edu_sef, 
        cmstr_edu_cer, cmstr_edu_typ, cmstr_edu_sch, cmstr_enr_cer, cmstr_enr_typ,
        cmstr_enr_sch, cmstr_mar, cmstr_occ, cmstr_occ_lif, 
        cmstr_pho_mod_lt, cmstr_pho_os_lt, cmstr_pho_os_ver_lt, cmstr_pho_net_lt,
        cmstr_app_reg_channl
    from ppdai_app_score_biz.common_user_daily000{}
    where user_id = {}
    '''.format(mod, userid)
    df = pd.read_sql(sql, engine)
    return df

这里% 10 表示连续扫描10个模。

其他

  • 另外,敏感信息都过滤了,code可以重新拿。
  • Appid,芝麻分。

dict pd.DataFrame

In [11]: pd.DataFrame(d.items())  # or list(d.items()) in python 3
Out[11]:
             0    1
0   2012-07-02  392
1   2012-07-06  392
2   2012-06-29  391
3   2012-06-28  391
...

In [12]: pd.DataFrame(d.items(), columns=['Date', 'DateValue'])
Out[12]:
          Date  DateValue
0   2012-07-02        392
1   2012-07-06        392
2   2012-06-29        391

我需要再搞几个接口函数,因为不是统一的,比如中台和其他的不一样。 然后修改下文档,太乱。 这个只是解释陈建的代码文档,并非要复盘,因此看完后,就可以copy陈建代码,自己写函数了。

ValueError: If using all scalar values, you must pass an index

一个key只有一个value的字典如果直接转化成数据框会报错。

pd.DataFrame.from_dict(response['data']['zhimaquery'], orient='index').T 加入orient='index'且转置.T

for loop

172.17.4.8loansd.ppdapi.com 是host。

df_2=pd.concat(a)为了merge两个pd.DataFrame合并。 type(a)的格式是list,所以可以merge。

%s的使用

str = 'I love %s and %s, he loves %s and %s.' 
str % ('ha','haha','hahaha','hahahaha')

%就是这么用,'I love ha and haha, he loves hahaha and hahahaha.'看句子。 哈哈真机智。 ( python about multiple %s in a string - Stack Overflow )

The d in %d stands for decimal. %d is for formatting numbers. %s is for formatting strings.

df.to_dict要具体情况具体分析

In [13]: df.to_dict('Records')[0]
Out[13]: {'a': 1, 'b': 2}

技术 系列导航

1 技术:Poisson分布、回归Python实现 2017-12-20
2 技术:beta系数理解 2017-12-21
3 技术:Python List剔除重复值 2017-12-21
4 技术:t-SNE处理高维数据可视化 2017-12-21
5 技术:用R语言进行文件系统管理 2017-12-21
6 技术:fct_lump分箱使用方法 2017-12-22
7 技术:F1分数为什么可以看不平衡样本的预测能力 2017-12-27
8 技术:Fisher的一个矩阵预算 2017-12-27
9 技术:case_when使用方法 2017-12-28
10 技术:fct_relevel调整对照组,批量的方案 2017-12-30
11 技术:python中变量批量处理集成方案 2017-12-30
12 技术:Python接口函数-中台 2018-01-03
13 技术:使用pbd包进行debug 2018-01-03
14 技术:R实现随机分组 2018-01-04
15 技术:jiebaR包做文本清洗 2018-01-05
16 技术:r_WACC使用说明 2018-01-05
17 技术:使用switchhost安装host 2018-01-05
18 技术:Git的下载问题 2018-01-06
19 技术:新闻爬虫 2018-01-07
20 技术:Scalable Data Processing in R 2018-01-08
21 技术:使用git创建一个自己的本地仓库 2018-01-11
22 技术:dashboard构建,来自yihui的包 2018-01-12
23 技术:最大似然估计再理解 2018-01-12
24 技术:itchat包提取微信好友公开数据 2018-01-13
25 技术:do函数和biglm包 2018-01-17
26 技术:Imputer后X少了一列 2018-01-18
27 技术:mac连接mysql,理论上win7也可以 2018-01-19
28 技术:ggpubr提高作图效率 2018-01-20
29 技术:t-SNE理论部分补充 2018-01-22
30 技术:RMarkdown的使用技巧 2018-01-30
31 技术:通过anova检验,理解R2、R_adj.2、F值 2018-01-31
32 技术:ggridges 山峦图 学习笔记 2018-02-02
33 技术:Tidyverse使用技巧 2018-02-02
34 技术:XGBoost 学习笔记 2018-02-02
35 技术:分布变离散,或者纠正skew 2018-02-02
36 技术:rsq在R中自定义函数 2018-02-03
37 技术:Jupyter实战 2018-02-13
38 技术:美化与定制 2018-02-21
39 技术:数据对比可视化指南 2018-02-22
40 技术:功能体验 2018-02-26
41 技术:高效数据处理 2018-02-27
42 技术:模型优化技巧 2018-03-05
43 技术:原理与应用 2018-03-06
44 技术:模型与可视化 2018-03-08
45 技术:美化与交互指南 2018-03-11
46 技术:高效操作指南 2018-03-14
47 技术:用法与优化技巧 2018-03-17
48 技术:效率提升指南 2018-03-18
49 技术:问题排查技巧 2018-03-18
50 技术:高效操作指南 2018-03-19
51 技术:方法与代码示例 2018-03-21
52 技术:进阶技巧与优化 2018-03-21
53 技术:实战示例 2018-03-22
54 技术:效率与规范指南 2018-03-24
55 技术:dplython包测评 2018-03-25
56 技术:原理与实现 2018-04-02
57 技术:原理与应用解析 2018-04-03
58 技术:实战指南 2018-04-05
59 技术:核心语法与函数整理 2018-04-05
60 技术:复利计算与应用 2018-04-08
61 技术:简单规则模型解析 2018-04-14
62 技术:高效代码设计指南 2018-04-25
63 技术:原理与应用学习笔记 2018-04-29
64 技术:实战指南 2018-04-29
65 技术:原理与应用 2018-05-01
66 技术:表格格式化指南 2018-05-02
67 技术:原理与应用介绍 2018-05-08
68 技术:高效文本拼接 2018-05-11
69 技术:方法与实践学习笔记 2018-05-12
70 技术:方法与工具 2018-05-12
71 技术:功能解析 2018-05-17
72 技术:高效数据输入 2018-05-21
73 技术:基础模型与方法 2018-05-22
74 技术:功能与使用体验 2018-05-26
75 技术:特征筛选学习笔记 2018-05-29
76 技术:实战技巧 2018-05-30
77 技术:建模思路解析 2018-06-03
78 技术:策略与实战 2018-06-03
79 技术:数据展示指南 2018-06-04
80 技术:包与环境配置指南 2018-07-14
81 技术:高效操作指南 2018-07-19
82 技术:方法与案例解析 2018-07-24
83 技术:统计建模学习笔记 2018-07-24
84 技术:展示技巧与原则 2018-08-10
85 技术:数据采集实战技巧 2018-08-21
86 技术:指标设计学习笔记 2018-09-20
87 技术:建模流程实战 2018-10-01
88 技术:大规模数据探索 2018-10-20
89 技术:文本提取与分析 2018-10-20
90 技术:原理与R实现实战 2018-10-21
91 技术:学习资源获取技巧 2018-10-23
92 技术:深度学习模型实战 2018-10-24
93 技术:实战指南 2018-10-30
94 技术:分析与展示指南 2018-11-03
95 技术:图片编辑与转换 2018-11-03
96 技术:安装与使用基础学习笔记 2018-11-07
97 技术:非结构化数据处理 2018-11-29
98 技术:表格美化技巧 2018-12-13
99 技术:分类数据可视化 2018-12-24
100 技术:流程图绘制技巧 2018-12-24
101 技术:自动化设置 2018-12-28
102 技术:协作与版本控制 2018-12-29
103 技术:pipeline设计 2018-12-30
104 技术:Git历史记录清理 2018-12-31
105 技术:AUC指标对比 2019-01-01
106 技术:时间序列可视化 2019-01-01
107 技术:变量命名工具指南 2019-01-02
108 技术:网页自动化截图 2019-01-02
109 技术:配置与优化 2019-01-03
110 技术:原理与应用 2019-01-07
111 技术:语法与核心概念 2019-01-14
112 技术:R包徽章设计 2019-01-15
113 技术:项目结构设计 2019-01-21
114 技术:文本分类基础任务 2019-01-22
115 技术:线性与非线性模型 2019-01-22
116 技术:有效性验证 2019-01-27
117 技术:评估与应用 2019-01-29
118 技术:循环神经网络入门 2019-01-30
119 技术:长短期记忆网络入门 2019-01-30
120 技术:for循环示例 2019-02-03
121 技术:基础到进阶 2019-02-06
122 技术:查询与整合 2019-02-06
123 技术:方法与案例 2019-02-14
124 技术:R包高效开发指南 2019-02-20
125 技术:解析与操作 2019-02-20
126 技术:训练与预测 2019-02-25
127 技术:原理与代码 2019-02-26
128 技术:GitHub个人访问令牌(PAT)设置 2019-03-04
129 技术:方法与工具 2019-03-07
130 技术:文本特征提取示例 2019-03-08
131 技术:基础任务示例 2019-03-18
132 技术:条形图与表头设计 2019-03-20
133 技术:连续与分类变量差异 2019-03-30
134 技术:思路与方法 2019-04-08
135 技术:方法与工具 2019-04-15
136 技术:多格式读取 2019-04-16
137 技术:方法与工具 2019-05-11
138 技术:Git/GitHub/GitLab 2019-05-13
139 技术:命令与操作 2019-05-19
140 技术:协作与版本控制 2019-05-26
141 技术:语法与实践 2019-06-28
142 技术:功能与API 2019-07-13
143 技术:安装与使用 2019-07-24
144 读《未来简史》:技术与未来 2019-09-14
145 技术:高效数据处理 2019-10-09
146 技术:性能优化技巧 2019-10-12
147 技术:配置与运维 2019-10-29
148 技术:原理与经典模型 2019-12-25
149 技术:构建到发布流程 2019-12-26
150 技术:方法与案例 2019-12-27
151 技术:命令与自动化 2019-12-30
152 技术:Pandas数据处理实战指南 2020-01-19
153 技术:特征工程之目标编码学习笔记 2020-01-20
154 技术:文档编写与美化 2020-01-28
155 技术:核心算法与应用 2020-01-29
156 技术:流程图绘制技巧 2020-01-29
157 技术:DataCamp课程笔记 2020-01-31
158 技术:Python实用代码片段合集 2020-01-31
159 技术:自动化构建流程 2020-02-02
160 技术:自动化工作流配置 2020-02-04
161 技术:高效查找代码与项目 2020-02-11
162 技术:代码环境快速部署 2020-02-24
163 技术:USD数据分析论文收录暨GitBook发布 2020-05-02
164 游记:西安博物院(5)西汉器物工艺到新莽技术应用 2020-10-01
165 技术:Causal Forest 2021-03-18
166 技术小团队人才培养思考:压力・复盘・沉淀 2024-05-21
167 BJ Fogg模型:从说服技术理论到行为设计实践 2024-11-24
168 管理视角:技术团队的核心交付是什么 2025-02-13
169 研读毛选:核心技术三大特征 2025-03-28