[424 楼] benniewang
[资深泡菜]
22-5-18 04:29
tianman 发表于 2022-5-17 07:50  其实呢,SQL和pandas并不是同一个类型的工具。 SQL长于数据的查询、提取和操纵。但是对数据分析并非所长,效率也有问题。 而Pandas是数据分析的工具包。
通常的做法是用SQL提取出具体分析需要的数据(显然直接使用数据库的数据来分析没必要也没效率) 然后将提取出的数据使用Pandas进行数据分析。 当然,如果数据量本来就不太大的话,直接使用Pandas也未尝不可。。。
直接使用SQL进行分析不是不行,而是没必要,也不值得。 你说的很对。 在我的理解里: 1、sql是个数据仓库,最重要的是能够高效安全的存储数据,并为查询提供便利。 2、如果在生产sql服务器上跑很复杂的脚本(消耗计算资源),要被it投诉的。 3、pandas是运行中的数据库,在内存里,一旦需要把数据保存下来,要么csv,要么输出到sql数据库。
|
[423 楼] tianman
[泡菜]
22-5-17 07:50
大信 发表于 2022-5-15 15:04  我们公司有些程序员的SQL很牛,能写出很长很烧脑的SQL代码。但是我不知道比如股票数据,计算5日,10日均线数据(MA5,MA10)的SQL代码好不好写?
如果是用pandas的话就非常好办,利用移动窗口函数一条命令就搞定了: N = 5,10,,,,,, df[“Close”].rolling(N).mean()
其中Close列为当日收盘数据 ---------------------------------- 例如: 其实呢,SQL和pandas并不是同一个类型的工具。 SQL长于数据的查询、提取和操纵。但是对数据分析并非所长,效率也有问题。 而Pandas是数据分析的工具包。 通常的做法是用SQL提取出具体分析需要的数据(显然直接使用数据库的数据来分析没必要也没效率) 然后将提取出的数据使用Pandas进行数据分析。 当然,如果数据量本来就不太大的话,直接使用Pandas也未尝不可。。。 直接使用SQL进行分析不是不行,而是没必要,也不值得。
|
[422 楼] 闲聊状态
[泡菜]
22-5-16 09:04
yejun 发表于 2022-5-16 03:08  还有些数据库可以在SQL里面内嵌python的,不过据说效率不高。 如果说的是 postgresql 那个 效率就是不高,而且Python的存储过程不安全(可以操作服务器上的所有,只要有权限) 那个就是个接口 python 要从数据库取数据,还是要先拿出来再放回去 但是 做些小应用确实是方便。前提是能接触到这个过程的都是可信任的人或者程序 另外 Pg上面也有机器学习的扩展 那个其实是python2的,更新也不太快
|
[421 楼] yejun
[老坛泡菜]
22-5-16 03:08
大信 发表于 2022-5-15 22:55  SQL也很强大,进化得真快! 最近几年SQL突然又流行起来了,感觉是因为数据仓库前端都是SQL。用分布式处理大数据还是很方便的,都不需要事先做索引,几百T的数据查询也只要几秒钟。 我觉得主要是因为SQL本身局限性造成你绞尽脑汁把算法变成SQL的时候把算法变成分布式算法了。虽然本质上没什么区别但是方便啊,几百行的SQL写成python要几千行。个人觉得python做数据预处理和最后处理,中间一步可以用sql。 本帖最后由 yejun 于 2022-5-16 03:16 编辑 以下内容由 yejun 于 2022-5-16 04:26 补充 还有些数据库可以在SQL里面内嵌python的,不过据说效率不高。
|
[420 楼] benniewang
[资深泡菜]
22-5-16 00:14
闲聊状态 发表于 2022-5-15 23:12  我觉得 对于开天辟地那几天还是要类似这么写才安全些。。。
要不然 就不满足完全的5前条了
真是隔行如隔山 这种提数需求 我这么多年还头回见到。。。
真是哪个行业都有暗坑啊 我就遇到过pandas的一个bug,后来看了源码才发现问题所在,提交上去了。
|
[419 楼] benniewang
[资深泡菜]
22-5-16 00:13
大信 发表于 2022-5-15 23:08  portfolio management 投资组合管理? 应该是金融工程的核心部门吧? 对,基金公司两大核心,一个是投资研究(包括公募股权、私募股权、固定收益、衍生品、另类投资产品--房产、地产、收藏品。。。。),一个就是投资组合管理。 1、团队里懂建模、算法和代码的就我一个。所以一起研究出来的新策略,评估以后我来翻译成算法,再让程序员翻译成代码。加入团队以后,基本上算法我都用python已经基本实现功能了,这样给程序员做一下QA再整合到系统里,开发效率就高很多。之前团队和程序员之间来回踢球就能踢很久。 2、组合管理和风控用到量化模型/金融工程多一些。 本帖最后由 benniewang 于 2022-5-16 00:21 编辑
|
[418 楼] 闲聊状态
[泡菜]
22-5-15 23:12
benniewang 发表于 2022-5-15 22:25  代码没法贴,随便搜搜。30平均移动。把29换成n-1就能实现n移动平均。看上去没有想象中的复杂,但是要自己想,估计想半天。 我觉得 对于开天辟地那几天还是要类似这么写才安全些。。。 要不然 就不满足完全的5前条了 真是隔行如隔山 这种提数需求 我这么多年还头回见到。。。 真是哪个行业都有暗坑啊 本帖最后由 闲聊状态 于 2022-5-15 23:14 编辑
|
[417 楼] 大信
[泡菜]
22-5-15 23:08
benniewang 发表于 2022-5-15 22:53  你是做金融工程的?我现在的职位是portfolio management portfolio management 投资组合管理? 应该是金融工程的核心部门吧?
|
[416 楼] 大信
[泡菜]
22-5-15 23:03
benniewang 发表于 2022-5-15 22:53  你是做金融工程的?我现在的职位是portfolio management No,我在一个支撑部门(非技术) 最近喜欢炒股的好朋友给我出了难题,要我写程序缩小选股范围,被逼无奈只有学习日均线、MACD 我对python有兴趣(去年还帮公司解决了设备网络在线状态监测的难题),是业余学习pandas。基本还是个门外汉。
|
[415 楼] 大信
[泡菜]
22-5-15 22:55
benniewang 发表于 2022-5-15 22:25  代码没法贴,随便搜搜。30平均移动。把29换成n-1就能实现n移动平均。看上去没有想象中的复杂,但是要自己想,估计想半天。 大概看懂了 ROWS BETWEEN 29 .... AND CURRENT ROW SQL也很强大,进化得真快! 本帖最后由 大信 于 2022-5-15 23:05 编辑
|
[414 楼] benniewang
[资深泡菜]
22-5-15 22:53
大信 发表于 2022-5-15 22:44  1.互联网真好! 2.当然殊途同归,SQL代码还是很长啊,不如rolling简洁。 3.除了平均值,rolling支持的函数还很多: var 方差 std 标准差 skew 三阶矩(又叫偏度,用于描述一组数据分布的对称性) kurt 四截距 (又叫峰度, 用于描述一组数据在均值附近分布的集中度) cov 协方差 corr 相关系数(对不同单位敏感性强;通常使用pearson相关系数,该系数对不同单位脱敏)
当然大部分我都用不上。但还是要感叹Python库的无比强大! 你是做金融工程的?我现在的职位是portfolio management
|
[413 楼] 大信
[泡菜]
22-5-15 22:44
benniewang 发表于 2022-5-15 22:25  代码没法贴,随便搜搜。30平均移动。把29换成n-1就能实现n移动平均。看上去没有想象中的复杂,但是要自己想,估计想半天。 1.互联网真好! 2.当然殊途同归,SQL代码还是很长啊,不如rolling简洁。 3.除了平均值,rolling支持的函数还很多: var 方差 std 标准差 skew 三阶矩(又叫偏度,用于描述一组数据分布的对称性) kurt 四截距 (又叫峰度, 用于描述一组数据在均值附近分布的集中度) cov 协方差 corr 相关系数(对不同单位敏感性强;通常使用pearson相关系数,该系数对不同单位脱敏) 当然大部分我都用不上。但还是要感叹Python库的无比强大!
|
[412 楼] 大信
[泡菜]
22-5-15 22:35
benniewang 发表于 2022-5-15 22:08  1、看了你的代码,给你一个小小的建议。字符串首尾不要一会用双引号,一会用单引号。估计你用这个来区别字段名和数据字符串。
2、虽然喜欢python超过sql,但是这句话背后逻辑应该是这样的:调用rolling方便,并不是因为他本身就方便,而是已经有人写了这个函数。就好像人说的:哪里有什么岁月静好,只是有人为你负重前行而已。sql如果真有需要,写一个rolling函数也不是什么大问题,虽然不知道该怎么做。 1.谢谢你的建议,注意改进coding 2.Python不是被叫做胶水语言吗?就是因为有海量的第三方库的支持,免去了自己写很多复杂函数的巨大工作量。直接把库拿来用,编程效率才显著提高。 3.如果我用SQL语言肯定写不出rolling这样的函数,太烧脑了。也不知道去哪里找SQL的rolling。所以我非常感谢Python,让我可以站在巨人的肩膀上。
|
[411 楼] benniewang
[资深泡菜]
22-5-15 22:25
代码没法贴,随便搜搜。30平均移动。把29换成n-1就能实现n移动平均。看上去没有想象中的复杂,但是要自己想,估计想半天。
|
[410 楼] 闲聊状态
[泡菜]
22-5-15 22:12
大信 发表于 2022-5-15 22:00  股票里有个概念叫做MA,有5日、10日、20日均线。比如5日均线 MA5 = (当天收盘价加上前面4天的收盘价)/5。 每只股票每天都有一个MA5值,除非股票上市发行不到5天。 我前面的帖子介绍了python的实现方式,就是利用dataframe的rolling函数一条命令完成。简洁、易懂,的确编码的效率非常高。
我不知道SQL大神们怎么实现的,但至少比较烧脑,代码的可读性也不强吧?
显然原始数据不能有遗漏,即股市每天的数据都有。但是日期可能会跳跃,因为股市经常不开门,休市比国家法定假日还多一些。但是这不会影响pandas的rolling函数计算。这个函数的中文名字叫移动窗口。就是用来统计计算最近N天数据(mean,sum、max,min,方差、协方差等等)
下图中3月5,6,7三天的MA5数据,分别是他们及其前面4行(共计5行)收盘数据(Close)的平均值。
5日的MA5 = Σ(day1:day5)/5 6日的MA5 = Σ(day2:day6)/5 7日的MA5 = Σ(day3:day7)/5
如果日期有跳跃,rolling会自动找最近5天收盘价 领域不同 我们没有这么齐的数据,节假日我们也有,是哪天有专门的表维护,使用时查表 你用了一个函数做的,换到sql上,用一个别人写好的函数也是一样的,毕竟你也没去手工实现roll 如果是从0开始写,那肯定比一个函数名长
|
[409 楼] benniewang
[资深泡菜]
22-5-15 22:08
大信 发表于 2022-5-15 22:00 
我前面的帖子介绍了python的实现方式,就是利用dataframe的rolling函数一条命令完成。简洁、易懂,的确编码的效率非常高。 1、看了你的代码,给你一个小小的建议。字符串首尾不要一会用双引号,一会用单引号。估计你用这个来区别字段名和数据字符串。 2、虽然喜欢python超过sql,但是这句话背后逻辑应该是这样的:调用rolling方便,并不是因为他本身就方便,而是已经有人写了这个函数。就好像人说的:哪里有什么岁月静好,只是有人为你负重前行而已。sql如果真有需要,写一个rolling函数也不是什么大问题,虽然不知道该怎么做。 本帖最后由 benniewang 于 2022-5-15 22:17 编辑
|
[408 楼] 大信
[泡菜]
22-5-15 22:00
闲聊状态 发表于 2022-5-15 20:51  不是金融专业的 对名词不熟悉,看样子就是个连续几天求个平均值? sql可以写个函数 select的时候调用一下,或者 直接创建表的时候直接创建一个计算列,或者创建一个视图,搞5天的数改成横表,然后求平均,就看具体需求了。 我的工作一般不涉及时序数据,能想到的基本就这几种,时序库的话,应该还有时序别的方法。
函数那种平时只要写一次就行了,既然是行业用户,类似的函数肯定有积累,也不用次次写,而且还可以根据需要 做间隔日,前后,多列,多条件聚组计算 pandas ,roll 也是个函数,而且是定好了的,如果数据里跳了一天或者有的少有的重总量恰好还能对上,或者是简单的没排序 这样出来的ma5还对吗?
知乎上有个系列帖子 一场pandas与SQL的巅峰大战 说实在的,我觉得那些sql对应的场景都偏简单 股票里有个概念叫做MA,有5日、10日、20日均线。比如5日均线 MA5 = (当天收盘价加上前面4天的收盘价)/5。 每只股票每天都有一个MA5值,除非股票上市发行不到5天。 我前面的帖子介绍了python的实现方式,就是利用dataframe的rolling函数一条命令完成。简洁、易懂,的确编码的效率非常高。 我不知道SQL大神们怎么实现的,但至少比较烧脑,代码的可读性也不强吧? 如果数据里跳了一天或者有的少有的重总量恰好还能对上,或者是简单的没排序 这样出来的ma5还对吗 显然原始数据不能有遗漏,即股市每天的数据都有,且按日期进行了排序。但是日期可能会跳跃,因为股市经常不开门,休市比国家法定假日还多一些。但是这不会影响pandas的rolling函数计算。这个函数的中文名字叫移动窗口,这个时间窗口自动锁定最近N行(如果日期不连续,自动向前补足N行)数据完成统计:mean,sum、max,min,方差、协方差等等 下图中3月5,6,7三天的MA5数据,分别是他们及其前面4行(共计5行)收盘数据(Close)的平均值。 5日的MA5 = Σ(day1:day5)/5 6日的MA5 = Σ(day2:day6)/5 7日的MA5 = Σ(day3:day7)/5 如果日期有跳跃,rolling会自动找最近5天收盘价 --------------------------- 本帖最后由 大信 于 2022-5-15 22:29 编辑
|
[407 楼] 闲聊状态
[泡菜]
22-5-15 20:51
大信 发表于 2022-5-15 15:04  我们公司有些程序员的SQL很牛,能写出很长很烧脑的SQL代码。但是我不知道比如股票数据,计算5日,10日均线数据(MA5,MA10)的SQL代码好不好写?
如果是用pandas的话就非常好办,利用移动窗口函数一条命令就搞定了: N = 5,10,,,,,, df[“Close”].rolling(N).mean()
其中Close列为当日收盘数据 ---------------------------------- 例如: 不是金融专业的 对名词不熟悉,看样子就是个连续几天求个平均值? sql可以写个函数 select的时候调用一下,或者 直接创建表的时候直接创建一个计算列,或者创建一个视图,搞5天的数改成横表,然后求平均,就看具体需求了。 我的工作一般不涉及时序数据,能想到的基本就这几种,时序库的话,应该还有时序别的方法。 函数那种平时只要写一次就行了,既然是行业用户,类似的函数肯定有积累,也不用次次写,而且还可以根据需要 做间隔日,前后,多列,多条件聚组计算 pandas ,roll 也是个函数,而且是定好了的,如果数据里跳了一天或者有的少有的重总量恰好还能对上,或者是简单的没排序 这样出来的ma5还对吗? 知乎上有个系列帖子 一场pandas与SQL的巅峰大战 说实在的,我觉得那些sql对应的场景都偏简单 本帖最后由 闲聊状态 于 2022-5-15 21:16 编辑
|
[406 楼] 大信
[泡菜]
22-5-15 16:32
yejun 发表于 2022-5-15 15:30  网上看到的,可以试一下。 import ssl ssl._create_default_https_context = ssl._create_unverified_context 果然“药到病除”,谢谢!
|
[405 楼] yejun
[老坛泡菜]
22-5-15 15:30
大信 发表于 2022-5-15 15:08  为什么pandas的read_excel不能打开网络上的xlsx文件? 如果这个文件下载到本地,打开就没有问题:
# 为什么read_excel不能远程打开xlsx文件?百思不得其解 df = pd.read_excel('https://www·gairuo·com/file/data/dataset/team.xlsx',engine='openpyxl') df = pd.read_excel("team.xlsx",engine='openpyxl')
---------------读https://远程文件的报错信息----------------- Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 1350, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1240, in request self._send_request(method, url, body, headers, encode_chunked) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1286, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1235, in endhe ... 网上看到的,可以试一下。 import ssl ssl._create_default_https_context = ssl._create_unverified_context
|
[404 楼] 大信
[泡菜]
22-5-15 15:08
为什么pandas的read_excel不能打开网络上的xlsx文件? 如果这个文件下载到本地,打开就没有问题:
# 为什么read_excel不能远程打开xlsx文件?百思不得其解 df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx',engine='openpyxl') df = pd.read_excel("team.xlsx",engine='openpyxl')
---------------读https://远程文件的报错信息----------------- Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 1350, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1240, in request self._send_request(method, url, body, headers, encode_chunked) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1286, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1235, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1006, in _send_output self.send(msg) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 946, in send self.connect() File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/http/client.py", line 1409, in connect self.sock = self._context.wrap_socket(self.sock, File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py", line 500, in wrap_socket return self.sslsocket_class._create( File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py", line 1040, in _create self.do_handshake() File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py", line 1309, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "/Volumes/4TB_DATA/Python项目/panda_study/T-行列选择.py", line 11, in <module> df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx',engine='openpyxl') File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/io/excel/_base.py", line 304, in read_excel io = ExcelFile(io, engine=engine) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/io/excel/_base.py", line 824, in __init__ self._reader = self._engines[engine](self._io) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/io/excel/_openpyxl.py", line 485, in __init__ super().__init__(filepath_or_buffer) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/io/excel/_base.py", line 342, in __init__ filepath_or_buffer = BytesIO(urlopen(filepath_or_buffer).read()) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/io/common.py", line 141, in urlopen return urllib.request.urlopen(*args, **kwargs) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 222, in urlopen return opener.open(url, data, timeout) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 525, in open response = self._open(req, data) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 542, in _open result = self._call_chain(self.handle_open, protocol, protocol + File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 502, in _call_chain result = func(*args) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 1393, in https_open return self.do_open(http.client.HTTPSConnection, req, File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/urllib/request.py", line 1353, in do_open raise URLError(err) urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)>
本帖最后由 大信 于 2022-5-15 15:10 编辑
|
[403 楼] 大信
[泡菜]
22-5-15 15:04
闲聊状态 发表于 2022-5-15 00:23  sql其实主要是用于统计分析
只要是二维表结构的,哪个有数据库+sql能打呢?
pandas 对我 就是个中转站,要么导入,要么送出,最多再来个刚转列…… 需要pandas 做数据分析的时候,我都是送到数据库跑sql... 我们公司有些程序员的SQL很牛,能写出很长很烧脑的SQL代码。但是我不知道比如股票数据,计算5日,10日均线数据(MA5,MA10)的SQL代码好不好写? 如果是用pandas的话就非常好办,利用移动窗口函数一条命令就搞定了: N = 5,10,,,,,, df[“Close”].rolling(N).mean() 其中Close列为当日收盘数据 ---------------------------------- 例如: 本帖最后由 大信 于 2022-5-15 15:06 编辑
|
[402 楼] yejun
[老坛泡菜]
22-5-15 13:18
benniewang 发表于 2022-5-15 09:34  要是数据从外部来,那就麻烦了,数据清洗比分析还浪费时间和经历。。。。 是很复杂,所以要做ETL架构设计啊。还有不少云数据平台。开源软件hadoop,spark,flink什么的。 本帖最后由 yejun 于 2022-5-15 13:23 编辑
|
[401 楼] benniewang
[资深泡菜]
22-5-15 09:34
闲聊状态 发表于 2022-5-15 00:23  sql其实主要是用于统计分析
只要是二维表结构的,哪个有数据库+sql能打呢?
pandas 对我 就是个中转站,要么导入,要么送出,最多再来个刚转列…… 需要pandas 做数据分析的时候,我都是送到数据库跑sql... 做的项目,基本上是从公司sql服务器里联合查询拿到数据存成csv,然后pandas读取,再用统计或者机器学习的算法跑出结果。。。要是数据从外部来,那就麻烦了,数据清洗比分析还浪费时间和经历。。。。
|
[400 楼] 闲聊状态
[泡菜]
22-5-15 09:04
yejun 发表于 2022-5-15 00:54  这两个又不矛盾。从大量数据提取的时候用sql。对小量数据探索的时候用pandas,可以简单加减乘除,可以生成临时列临时表,用sql做子表导入导出不要麻烦死了啊。pandas还可以多级表头列头很直观,用sql就变成多个相关表,也是麻烦死了。pandas画图也很方便。pandas也有可以用sql查询的前段,和用sql存数据的后端,pyspark好像还有个pandas前段看上去不错。肯定两个一起用效率最高。 可能是经历不同吧 数据清洗这种事情 一般来说 就是SQL我也得写一堆,让我写pandas我是不干的 sql的结构 这么多年已经被无数场景证明了 而且我这么多年也算一路SQL过来的,所以看到数据,首先都是 to_sql 然后select .... 而且sql是一种比python还有高级的语言 其解决具体领域的问题我是觉得它的表达是更简练的
|
[399 楼] yejun
[老坛泡菜]
22-5-15 00:54
闲聊状态 发表于 2022-5-15 00:23  sql其实主要是用于统计分析
只要是二维表结构的,哪个有数据库+sql能打呢?
pandas 对我 就是个中转站,要么导入,要么送出,最多再来个刚转列…… 需要pandas 做数据分析的时候,我都是送到数据库跑sql... 这两个又不矛盾。从大量数据提取的时候用sql。对小量数据探索的时候用pandas,可以简单加减乘除,可以生成临时列临时表,用sql做子表导入导出不要麻烦死了啊。pandas还可以多级表头列头很直观,用sql就变成多个相关表,也是麻烦死了。pandas画图也很方便。pandas也有可以用sql查询的前段,和用sql存数据的后端,pyspark好像还有个pandas前段看上去不错。肯定两个一起用效率最高。 本帖最后由 yejun 于 2022-5-15 01:05 编辑
|
[398 楼] 闲聊状态
[泡菜]
22-5-15 00:23
benniewang 发表于 2022-5-14 01:59  使用sql是为了从数据库查找数据(当然不是说sql不能做一些简单的统计分析)。但是df是用来存储运行中的结构化数据,并且可以做很多复杂的统计分析。 sql其实主要是用于统计分析 只要是二维表结构的,哪个有数据库+sql能打呢? pandas 对我 就是个中转站,要么导入,要么送出,最多再来个刚转列…… 需要pandas 做数据分析的时候,我都是送到数据库跑sql...
|
[397 楼] yejun
[老坛泡菜]
22-5-14 04:37
access主要是前端吧,后端数据库可以用odbc连接,理论上也应该也可以做数据处理。python的强项主要还是各种库多,而且前端jupyter也挺好用的。
|
[396 楼] benniewang
[资深泡菜]
22-5-14 02:01
Cityrain 发表于 2022-5-13 15:15  这些东西如果数据不大的话,应该excel就能搞定。 数据的处理和计算的话,python理论上可以搞定一切,当然只学个入门课程是不太够的。我access没怎么用过,但应该不比Oracle之类的强大,你觉得access能搞定的,我看python铁定可以办到。 access就是一个轻量化的sql数据库,前台可以做一些报表什么的。
|
[395 楼] benniewang
[资深泡菜]
22-5-14 01:59
闲聊状态 发表于 2022-5-11 11:03  现在办公室都让卸载office了
装WPS
access 没戏了
用sqlite吧 python就集成了。。。
大数据 还是sql吧 我是不习惯 pandas 里来回的鼓捣数据,就是觉得不如sql方便 使用sql是为了从数据库查找数据(当然不是说sql不能做一些简单的统计分析)。但是df是用来存储运行中的结构化数据,并且可以做很多复杂的统计分析。
|