1. 程式人生 > >Windows下PythonQt3.2使用pandas.pivot_table

Windows下PythonQt3.2使用pandas.pivot_table

png www 混合編程 資料 num app clas 解決方法 style

本機環境

  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