power query 可以开车了你知道吗?
话说最新版本的PowerBI已经可以使用Python脚本,和R类似我们需要先安装对应脚本编译器,抱着试一试的心态去百度搜了一下Python的官网(哪里不懂都可以问百度,直到你装好Python为止)。
我安装了最新的3.7版本(建议目前可以装个3.5就好,3.7很多还没有资源包文件扩展),然后我使用pip安装包的方式安装了在PowerBI环境下使用必须装的两个包(pandas和matplotlib),关于pip安装包怎么装,请问百度。
准备工作做好后就可以开始了:
打开powerbi在选项和设置里面点击预览功能模块,勾选python支持项。
设置好后重启powerbi,通过获取数据-其他-python脚本即可打开python脚本编辑框,写下python脚本即可!
你也可以直接使用空查询写函数"=Python.Execute("你要写的脚本代码",需要传递的可选参数记录)"的形式直接使用。
注意:我们在Python脚本编辑框中的脚本里面换行符会被自动转义为#(lf)。
和R类似,powerbi中的python需要显示为dataframe结构输出,否则会显示为空表如下所示!
当然可以在脚本中引用M中的数据进行M与python的交互,假设M表包含姓名和成绩两列,我们通过Python脚本提取姓名列可以通过如下方式实现:
这里引出在PowerBI中使用Python脚本进行交互输出数据的几点注意事项:
1.Python.Execute第二参数中记录值必须是表;
2.第一参数需要赋值给具体名称;
3.需要转储为dataframe结构。
我们不是常常抱怨Power Query对于文件的输出不擅长?这里提供一种方式实现对外输出生成文件(请确认您是否安装了xlwt和openpyxl两个包):
Python.Execute("x.to_excel('C:/Users/Administrator/Desktop/测试.xlsx')",[x=源表])
这样就可以将powerbi中的表输出生成为外部excel工作簿。
交互传递变量的方式还可以使用字符串重组的方式实现:
注意,当我们使用相关拓展数据包时记得提前安装加载好。
我们也可以利用cmd命令运行外部python脚本文件:
Python.Execute("p=os.popen('python f:\数独.py')
数独=pandas.DataFrame([p.read()])")[Value]{0}[0]{0}
当然你也可以使用类似读取文本文件的操作直接读取脚本。
下面传递外部参数,命令行指定变量交互给本地python脚本文件:
Python.Execute("p=os.popen('python f:/a.py 中国')
传参数=pandas.DataFrame([p.read()])")[Value]{0}[0]{0}
注意上面的脚本文件编码方式:print内中文的话,注意将文件编码改为utf-8,否则powerbi显示为空白!
下面是开车时间:
先Pip方式安装百度AI的包:
pip install baidu-aip
然后申请相关模块的接口账号信息,比如我在语音识别模块申请分配到的相关接口调用信息如下:
APP_ID = '11460190'
API_KEY = 'BKtBSMXIaN3o8vZIaZf02g7P'
SECRET_KEY = '7gvHBFDbLvTqqS1YfItMb4xeXkEEoxUP'
有了这些我们就可以直接在脚本编辑框写下如下代码实现字符串转为语音信息。
from aip import AipSpeech
APP_ID = '11460190'
API_KEY = 'BKtBSMXIaN3o8vZIaZf02g7P'
SECRET_KEY = '7gvHBFDbLvTqqS1YfItMb4xeXkEEoxUP'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
result = client.synthesis('还踢球?开车啦,各位旅客,请坐好扶稳,前方为事故多发地,请自备砸窗逃生工具!','zh',1,{
'vol': 5,'per':4
})
if not isinstance(result, dict):
with open('C:/Users/Administrator/Desktop/M.mp3', 'wb') as f:
f.write(result)
大家可以试一下模拟透视表分页、规划求解、批量发邮件、网抓等操作。
开始提到了pbi中使用python必须装的两个包,有一个matplotlib是用来展示图表的,这一块这里没有展示,我们打开pbi,如果数据编辑生成没有表,貌似无法启动pyhon图表功能(图表脚本区无法写入代码),我是直接用任意一个表随便选个字段后就可以修改脚本区代码了。
最后,这里不提供python等吃鸡操作,关于python具体内容的学习我也是百度的......
最近PowerBI更新了内置的pdf读取功能Pdf.Tables
附dataframe结构相关基础操作:
按关键字拆分总表为明细表
Python.Execute("data=pandas.read_excel(r'C:\Users\Administrator\Desktop\2018年工资表.xlsx',sheetname='工资表')
wr=pandas.ExcelWriter(r'C:\Users\Administrator\Desktop\2018年工资表.xlsx',engine='xlsxwriter')
[data[data['月份']==j].to_excel(wr,sheet_name=str(j),index=False) for j in list(set(data['月份']))]
wr.close()")
做二维码,首先安装qrcode和Pillow包
import qrcode
img = qrcode.make('http://pbihub.cn')
img.save('C:/Users/Administrator/Desktop/test.png')
或者加个背景:
from MyQR import myqr
myqr.run('https://pbihub.cn/users/44/articles',1,'H','C:/Users/Administrator/Desktop/背景.png',True,1.0,1.0,'输出.png','C:/Users/Administrator/Desktop')
道高一尺 魔高一丈
https://pbihub.cn/users/44
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)