筛选熊猫数据透视表
我试图通过SQL查询为大熊猫提供一些数据,然后将旋转结果保存到.csv文件中。到目前为止,我已取得成功。筛选熊猫数据透视表
import cx_Oracle
import pandas as pd
query = """
SELECT
dt,
--Workstack,
GM,
COUNT(JOB_NUMBER)
FROM MY_TABLE
GROUP BY
dt,
--Workstack,
GM
"""
connection = cx_Oracle.connect("<My_Username>", "<My Password>", "<Database String>")
df = pd.read_sql_query(query, connection)
piv = df.pivot(index='GM', columns='DT', values='COUNT')
print (piv.head())
piv.to_csv('''Workstack.csv''')
现在我想包括查询变量中使用的字段“Workstack”,我也希望用大熊猫与现场Workstack不同的字符串过滤,然后将其粘贴不同的CSV文件或在同一个Excel文件。然而,当我查询蟒蛇内包括Workstack给了我这个错误...
ValueError: Index contains duplicate entries, cannot reshape
任何想法如何解决这个问题?最终,我想使用python Excel模块将上面的数据透视表粘贴到不同的单元格和工作表上。
由于:)
尝试pivot_table
具有聚合功能:
piv = df.pivot_table(index='GM', columns='DT', values='COUNT', aggfunc='sum')
或GROUPBY();) – jezrael
非常感谢您的帮助!无论如何,我可以通过过滤不同的“Workstack”值来创建更多的数据透视表吗? –
是的,'df.query('Workstack == 5).pivot_table(index ='GM',columns ='DT',values ='COUNT',aggfunc ='sum')''。 –
import cx_Oracle
import pandas as pd
query = """SELECT * FROM MY_TABLE"""
print('Loading Query')
connection = cx_Oracle.connect("Username", "Password", "Data Connection")
df = pd.read_sql_query(query, connection)
PivotTable = df.loc[df['ColumnName'] == "ValueinColumn"].pivot_table(index='SelectRows', columns='SelectColumns', values='SelectValues', aggfunc='SelectAggregation')
print ("Writing to Excel")
ExcelWorkbook = pd.ExcelWriter('Data.xlsx')
PivotTable.to_excel(ExcelWorkbook, sheet_name='PivotTable', startrow=1)
ExcelWorkbook.save()
print ("Closing Connection")
connection.close()
print('Section Complete')
尝试枢转之前,将索引复位:df.reset_index()枢轴 – skrubber