Windows下PythonQt3.2使用pandas.pivot_table
本機環境
1、win7 64 旗艦版
2、Qt 5.9.1(MSVC 2015,32 bit)
3、Python 3.7.1 (32-bit),二進制包安裝的,即Windows x86 executable installer
4、PythonQt 3.2 使用上面的環境,源碼編譯
5、2018年10月26日
前敘
1、為什麽沒有全部使用vs2015編譯python。就是官方建議的pythonQt和python的編譯器保持一致,實際編譯中python的庫編譯成功了,但應該是環境問題,和官方的安裝包比不是很一樣。並且vs2015只能支持編譯Python3.6及以下版本。
2、為什麽沒有使用Anaconda進行管理。本文中使用pandas包,先前打算使用Pythoner都說pip怎麽怎麽麻煩,推薦的Anaconda進行包的管理,經過摸索發現,Anaconda裏面包含了Python,根本不需要先安裝Python,Anaconda都會內置一個Python(這個python才擁有各種包的環境),並且Anaconda不是每個python都有一個版本的。
Anaconda3-5.3.0-Windows-x86——內置python-3.7.0
Anaconda3-5.2.0-Windows-x86——內置python-3.6.5
我在編譯PythonQt3.2時,設置了Anaconda中python庫的位置,編譯完全沒有問題,但運行實例時,報錯(具體錯誤忘記),但是使用對應版本的Python二進制安裝包安裝,然後編譯PythonQt3.2運行實例,則正常,也就是說PythonQt3.2無法使用Anaconda提供的python庫。——有解決方法,歡迎各位指正
安裝pandas
通過參考資料,因為國內被墻,pip使用國內鏡像源,安裝pandas,還好pip會自己安裝pandas依賴的包。CMD中運行:
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
此時配置Pycharm,可以看到已安裝的包
測試代碼:
要註意PythonQt3.2中import pandas會報沒有模塊,但是在cmd中可以。根據參考資料,包含路徑即可解決,本人也嘗試將這個路徑加入環境變量Path,但不好用。怎麽查看三方包site-packages的目錄,見下圖:
源碼:
from PythonQt.QtGui import * import sys # To use site-packages sys.path.append(‘C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37-32\\Lib\\site-packages‘) from collections import OrderedDict from pandas import DataFrame import pandas as pd import numpy as np import datetime df = pd.DataFrame({‘A‘: [‘one‘, ‘one‘, ‘two‘, ‘three‘] * 6, ‘B‘: [‘A‘, ‘B‘, ‘C‘] * 8, ‘C‘: [‘foo‘, ‘foo‘, ‘foo‘, ‘bar‘, ‘bar‘, ‘bar‘] * 4, ‘D‘: [‘甲‘, ‘乙‘, ‘丙‘] * 8, ‘E‘: [datetime.datetime(2013, i, 1) for i in range(1, 13)] + [datetime.datetime(2013, i, 15) for i in range(1, 13)]}) print(df) p = pd.pivot_table(df,index=[‘A‘, ‘B‘], columns=[‘C‘,‘D‘],aggfunc=‘count‘,fill_value=‘0‘,margins=True) print(p)
運行結果:
A B C D E 0 one A foo 甲 2013-01-01 1 one B foo 乙 2013-02-01 2 two C foo 丙 2013-03-01 3 three A bar 甲 2013-04-01 4 one B bar 乙 2013-05-01 5 one C bar 丙 2013-06-01 6 two A foo 甲 2013-07-01 7 three B foo 乙 2013-08-01 8 one C foo 丙 2013-09-01 9 one A bar 甲 2013-10-01 10 two B bar 乙 2013-11-01 11 three C bar 丙 2013-12-01 12 one A foo 甲 2013-01-15 13 one B foo 乙 2013-02-15 14 two C foo 丙 2013-03-15 15 three A bar 甲 2013-04-15 16 one B bar 乙 2013-05-15 17 one C bar 丙 2013-06-15 18 two A foo 甲 2013-07-15 19 three B foo 乙 2013-08-15 20 one C foo 丙 2013-09-15 21 one A bar 甲 2013-10-15 22 two B bar 乙 2013-11-15 23 three C bar 丙 2013-12-15 E C bar foo All D 丙 乙 甲 丙 乙 甲 A B one A 0 0 2 0 0 2 4 B 0 2 0 0 2 0 4 C 2 0 0 2 0 0 4 three A 0 0 2 0 0 0 2 B 0 0 0 0 2 0 2 C 2 0 0 0 0 0 2 two A 0 0 0 0 0 2 2 B 0 2 0 0 0 0 2 C 0 0 0 2 0 0 2 All 4 4 4 4 4 4 24
參考資料
更換pip源到國內鏡像 https://blog.csdn.net/chenghuikai/article/details/55258957
在Qt(C++)中與Python混合編程 https://www.cnblogs.com/xia-weiwen/p/7932379.html
Windows下PythonQt3.2使用pandas.pivot_table