Python爱好者俱乐部
18247 542
[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是用来存储运行中的结构化数据,并且可以做很多复杂的统计分析。