0
A
回答
2
還有就是,據我所知,沒有任何方式方便,df.describe(),但也有SQL語句,可以讓你所有你想要的信息。
下面的im使用SQL Server中的存儲過程返回所有列及其數據類型。循環遍歷它們以獲取float-type的所有列名稱,然後從它們構建新的查詢。
然後將所有內容放入最終的數據框中。我只包括90百分位數,但我認爲你可以計算出如何增加更多。你可能想要添加更多的數據類型而不是浮動。
這個解決方案是醜陋和緩慢的,但它對我來說只是將所有數據拉到一個數據幀失敗的內存。
import pyodbc
import pandas as pd
def sql2df(sql, connection):
df = pd.read_sql(sql=sql, con=connection)
return df
cnx = pyodbc.connect(r'DRIVER={SQL Server};SERVER=.\SQLEXPRESS;DATABASE=TEST;Trusted_Connection=yes;')
df_columns = sql2df('exec sp_columns test_table', cnx)[['COLUMN_NAME', 'TYPE_NAME']]
numeric_columns = []
for index, row in df_columns.iterrows():
if row[1] == 'float': #or int or any numeric
numeric_columns.append(row[0])
final_df = pd.DataFrame(index=(['stdev', 'count', '90%', 'mean']))
for col in numeric_columns:
standard_dev = sql2df('SELECT STDEV('+col+') FROM dbo.test_table', cnx)\
.get_value(0,0, takeable=True)
cnt = sql2df('SELECT COUNT(' + col + ') FROM dbo.test_table', cnx)\
.get_value(0,0, takeable=True)
# percentile is 100-N so top 10 means 90 percentile
ninety_percentile = sql2df('SELECT Min(subq.' + col + ') FROM(SELECT TOP 10 PERCENT ' + col +
' FROM dbo.test_table ORDER BY ' + col + ' DESC) AS subq', cnx)\
.get_value(0,0, takeable=True)
mean = sql2df('SELECT AVG(' + col + ') FROM dbo.test_table', cnx)\
.get_value(0,0, takeable=True)
final_df[str(col)] = [standard_dev, cnt, ninety_percentile, mean]
print final_df
cnx.close()
相關問題
- 1. 描述統計在熊貓
- 2. 禁止描述輸出打印大熊貓數據幀時
- 3. 如何在大熊貓中調用大塊描述函數?
- 4. 熊貓:過濾描述輸出(計數)
- 5. 熊貓描述 - 附加參數
- 6. 如何描述整個矩陣或熊貓數據幀
- 7. 如何通過熊貓導入.dta並描述數據?
- 8. Pchart 2.0大數據描述
- 9. 代表熊貓描述()在字典的形式
- 10. 在大熊貓數據幀
- 11. 大熊貓 - 在數據幀
- 12. Python的大熊貓 - 從年度數據
- 13. 如何從R數據到大熊貓
- 14. 如何從大熊貓數據幀
- 15. 如何從列大熊貓數據幀
- 16. 從現有的數據集大熊貓
- 17. 大熊貓數據幀從嵌套JSON
- 18. 總結大熊貓數據框列表
- 19. 大熊貓數據透視表熱圖
- 20. 列表大熊貓數據幀
- 21. 大熊貓數據透視表排列
- 22. Python列表以大熊貓數據幀
- 23. XML到大熊貓數據幀
- 24. 在大熊貓數據幀
- 25. 在大熊貓數據幀
- 26. 大熊貓組數據幀
- 27. 大熊貓根據指數
- 28. 樞轉數據大熊貓
- 29. 大熊貓:在數據幀
- 30. 在大熊貓擴大行數據幀