python里如何写函数产生报表/2way_tables ?

b
bluesky321
楼主 (未名空间)


学python一个月有余,还在摸索阶段。 现在我想生成很多二维表, 总结某种因素有什
么影响。 比如性别,种族,对covid19死亡率什么影响, 该表col_label是: 男生存
,男死亡,女生存,女死亡,男性死亡率,女性死亡率, 男女比。 row_label是:男
,女,总计。

每次调用的时候写: get_table_categorical( dataset_name, input_var, outcome_
var );
input_var 可以是离散的,种族,性别,地区。
output 是离散的,生/死 ,yes/no

如果输入变量是连续的,如年龄,血氧,血压,脉搏,呼吸,再另外写个函数
get_table_continuous( dataset_name, input_var, outcome_var,N );
N是把input_var分成几组,decile, pentile, etc

以后会有功能扩展:
1. 如果我有20个变量,希望可以把所有结果输出到一个xlsx里面。
2. 一个因子对应一个柱状图,同样在xlsx里。
http://biostat.mc.vanderbilt.edu/wiki/pub/Main/Bios311Syllabus2014/230_chisquare_test_for_categorical_data_part2.pdf ,第六页这个表差不多,应该更简单些。

不知谁能给点思路 ? 应该用哪个包, 怎么实现?

f
forcar

表格的话,最好用 pandas 吧, 简单一点的用 numpy ?

【 在 bluesky321 (bluesky) 的大作中提到: 】
: 学python一个月有余,还在摸索阶段。 现在我想生成很多二维表, 总结某种因素有什
: 么影响。 比如性别,种族,对covid19死亡率什么影响, 该表col_label是: 男生存
: ,男死亡,女生存,女死亡,男性死亡率,女性死亡率, 男女比。 row_label是:男
: ,女,总计。
: 每次调用的时候写: get_table_categorical( dataset_name, input_var, outcome_
: var );
: input_var 可以是离散的,种族,性别,地区。
: output 是离散的,生/死 ,yes/no
: 如果输入变量是连续的,如年龄,血氧,血压,脉搏,呼吸,再另外写个函数
: get_table_continuous( dataset_name, input_var, outcome_var,N );
: ...................

d
didadida

pdf里的输出看着像Stata??

【 在 bluesky321 (bluesky) 的大作中提到: 】
: 学python一个月有余,还在摸索阶段。 现在我想生成很多二维表, 总结某种因素有什
: 么影响。 比如性别,种族,对covid19死亡率什么影响, 该表col_label是: 男生存
: ,男死亡,女生存,女死亡,男性死亡率,女性死亡率, 男女比。 row_label是:男
: ,女,总计。
: 每次调用的时候写: get_table_categorical( dataset_name, input_var, outcome_
: var );
: input_var 可以是离散的,种族,性别,地区。
: output 是离散的,生/死 ,yes/no
: 如果输入变量是连续的,如年龄,血氧,血压,脉搏,呼吸,再另外写个函数
: get_table_continuous( dataset_name, input_var, outcome_var,N );
: ...................

b
bluesky321

这么说吧, 这种表格,N行,7列, N = ( no. of levels of input_var + 2 ) sas实现大概需要50,60行, R里面也差不多,20行~30行。

python/pandas研究了一个月,完全没思路。
都说python好,所以上来请教一下。我觉着python天生不是干这个的,所以有难度。 R天生就是折腾数据的,又被hadley改造过,所以容易些。
d
didadida

这个任何编程语言都可以做

估计最容易的是VBA

任何语言都可以产生CSV文件
然后csv直接由Excel当作external source读取, 里边早就有了各类pivot table/chart

【 在 bluesky321 (bluesky) 的大作中提到: 】
: 这么说吧, 这种表格,N行,7列, N = ( no. of levels of input_var + 2 ) sas实
: 现大概需要50,60行, R里面也差不多,20行~30行。
: python/pandas研究了一个月,完全没思路。
: 都说python好,所以上来请教一下。我觉着python天生不是干这个的,所以有难度。 R
: 天生就是折腾数据的,又被hadley改造过,所以容易些。

w
walkrandom

就是一个array操作
不要用任何的库
你的输出输入都很明确
简单的一个function就可以了
max 30 lines
自己写,一次bug free,
然后你就入门了
你到处找库,最多就是一个调包侠

s
sunshineboy

pandas 里面用groupby 一次就出来了

然后把dataframe打印出来 或者to_csv 就跟你贴的pdf第六页里的一样了

数据处理都很类似的 R没用过 但Python numpy pandas是继承Matlab的风格 核
心是矩阵 2阶矩阵其实也就是表

b
beidapig

colab可以直接操作 google sheethttps://medium.com/analytics-vidhya/colab-and-google-sheets-surprisingly-
powerful-combination-for-data-science-part-1-bbbb11cbd8e
g
guvest

Csv导excel有trick。学成个excel专家,在今日似乎不合时宜。建议避开。

连Kaggle上的题目有时候数据格式都会遇到错。用excel打开csv,然后存一下,就可以
跟之前的原始数据不一样。而且不给你提示。

Pandas groupby对新手可以的。
【 在 didadida(滴滴嗒嗒) 的大作中提到: 】
<br>: 这个任何编程语言都可以做
<br>: 估计最容易的是VBA
<br>: 任何语言都可以产生CSV文件
<br>: 然后csv直接由Excel当作external source读取, 里边早就有了各类pivot table
/chart
<br>: R
<br>

d
database

second pandas, pandas 可以parse html table.应该也可以生产html table.
【 在 forcar (forcar) 的大作中提到: 】
: 表格的话,最好用 pandas 吧, 简单一点的用 numpy ?

g
guvest

Pandas DF确有to_html

【 在 database(《※★※§Hey§※★※》) 的大作中提到: 】

: second pandas, pandas 可以parse html table.应该也可以生产html table.

b
bluesky321

多谢顾老捧场。 我的工作是给业务部门量化支持,业务部门每天有各种想法,看似千
奇百怪,说到底都是测量各种指标,做出各种报表;( 好比药厂临床试验,大的不得
了的产业,从程序员,统计师博士,到食品药物管理局,其实就一件事, 产生报表, 得出结论 )。

我原先认为做报表python应该很擅长,学了一个月,还真不是这么回事。 数学计算还
可以,python做报表没那么容易 。 比如我写一个字, customer_id, 那么这个字是数据集里面的变量名, 还是编程环境里面的变量名 ? 还是装着变量名的变量 ? 顾老
对起名字有研究,其实是很现实的问题。

R做报表很繁琐, 因为涉及到所谓‘函数编程’,什么全区变量,局部变量,懒惰计算(lazy eval)等等, 我花了很长时间,写了大概三四十行,终于算是完成了。 行数虽
然短,但要调用哈德利的软件包,其实是个试错的过程。 不是算法多复杂,而是用别
人的轮子, 轮子上有坑, 得自己填了。

私信请教了贵版一些专家,收到中肯的建议,在此一并谢过。

g
guvest

如果是新人。上个python,pandas的船应该不会后悔。
应用千变万化,任何一个tool,我怀疑,做复杂的报表,都不容易,都会碰到很多问题
。(名字问题,属于程序之外的能力。切不谈。)
R的前景,前途如何,我个人不太清楚。可能R的专家才能说明白。
Excel其实是非常厉害的软件。但是和开源社区的潮流不符合。

我给找来的新人也讲,工作是公司的,技能点是自己的。所以我安排人改用什么,学什么,一定会讲清背后的原因。然后说:决定是诸位与我一同做出的。

【 在 bluesky321(bluesky) 的大作中提到: 】
<br>: 多谢顾老捧场。 我的工作是给业务部门量化支持,业务部门每天有各种
想法,
看似千
<br>: 奇百怪,说到底都是测量各种指标,做出各种报表;( 好比药厂临床试
验,大
的不得
<br>: 了的产业,从程序员,统计师博士,到食品药物管理局,其实就一件事, 产生
报表,
<br>: 得出结论 )。
<br>: 我原先认为做报表python应该很擅长,学了一个月,还真不是这么回事。 数学
计算还
<br>: 可以,python做报表没那么容易 。 比如我写一个字, customer_id, 那么这个
字是数
<br>: 据集里面的变量名, 还是编程环境里面的变量名 ? 还是装着变量名的
变量 ?
顾老
<br>: 对起名字有研究,其实是很现实的问题。
<br>: R做报表很繁琐, 因为涉及到所谓‘函数编程’,什么全区变量,局部变量,懒
惰计算
<br>: (lazy eval)等等, 我花了很长时间,写了大概三四十行,终于算是完成了。
行数虽
: ...................
<br>

b
bluesky321

应付工作, copy_paste足够了。 但对自己没提高啊 。
老魏不是倡导要做个有追求的人, 脱离低级趣味的人嘛。
贵版dracdoc很久前比较过R和python, R适合搞分析,给老板展示观点;python是做到
产品里去给消费者用;
g
guvest

我应该没倡导过啥?“抛却自家无尽藏,沿门持钵效贫儿”
每个人自身都是宝藏。用不着别人倡导。

我反感不弄个“大牛说了”,“业界认为”,“大家认为”。。。的噱头就不敢说话
的胆小如鼠之辈。这点可确认。

个人的真知就算是错的,那也是良知。反过来,一丝真知也无,那就没人性了。
【 在 bluesky321 (bluesky) 的大作中提到: 】
: 应付工作, copy_paste足够了。 但对自己没提高啊 。
: 老魏不是倡导要做个有追求的人, 脱离低级趣味的人嘛。
: 贵版dracdoc很久前比较过R和python, R适合搞分析,给老板展示观点;python是做到
: 产品里去给消费者用;

w
whzemuch

pandas.pivot_table试过没有,和excel的pivot table功能类似, 应该能解决你的问