Bir iPython Dizüstü bilgisayar sunucusu çalıştırıyorum ve kullanıcıların kendi ortamlarında kullanabilmeleri için bir panda veri dosyasını bir csv dosyası olarak indirmelerini istiyorum. Kişisel bir veri yok, bu yüzden eğer çözüm sunucuda dosya yazmayı içeriyorsa (ki bunu yapabilirim) ve o dosyayı indirirseniz, bundan memnun olurum.Bir iPython Dizüstü Bilgisayardan CSV'yi İndirme
cevap
Sen dizüstü nesneler için html görüntüleyebilir ve veri URL'ler, bir csv indirilebilir içeriğini yapmak gerçeğini kullanabilirsiniz:
import urllib
class CSV(object):
def _repr_html_(self):
html = []
html.append("{},{},{}".format(
"user",
"age",
"city"
)
)
html.append("{},{},{}".format(
"Alice",
"39",
"New York"
)
)
html.append("{},{},{}".format(
"Bob",
"30",
"Denver"
)
)
html.append("{},{},{}".format(
"Carol",
"27",
"Tulsa"
)
)
export = '\n'.join(html)
export = urllib.quote(export.encode("utf-8"))
csvData = 'data:application/csv;charset=utf-8,' + export
return "<a download='export.csv' href='{}' target='_blank'>csv file</a>".format(csvData)
CSV()
Nasıl ipython dan FileLinks sınıfını kullanmaya ne dersiniz? Bunu doğrudan Jupyter notebook'lardan veriye erişim sağlamak için kullanıyorum. Verilerinizi varsayarsak pandalar dataframe p_df içinde: Bir defter hücre ve sonuç olarak
from IPython.display import Filelink, FileLinks
p_df.to_csv('/path/to/data.csv', index=False)
p_df.to_excel('/path/to/data.xlsx', index=False)
FileLinks('/path/to/')
çalıştırın bu dosyalara bağlantılar listesi olmak dizüstü doğrudan indirilebilir olacak. '/path/to'
, notebook kullanıcısı için elbette erişilebilir olmalıdır. sunucuda CSV'leri depolamak önlemek istiyorsanız
, istemci tarafında CSV oluşturmak bu Javascript alternatifi kullanabilirsiniz: Temelde
from IPython.display import Javascript
js_download = """
var csv = '%s';
var filename = 'results.csv';
var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
if (navigator.msSaveBlob) { // IE 10+
navigator.msSaveBlob(blob, filename);
} else {
var link = document.createElement("a");
if (link.download !== undefined) { // feature detection
// Browsers that support HTML5 download attribute
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", filename);
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
""" % data_in_dataframes.to_csv(index=False).replace('\n','\\n').replace("'","\'")
Javascript(js_download)
, bu pd gelen Python bir CSV dize oluşturur dataframe ve onu küçük bir js betiğinde creates a CSV file on the client side kullanın ve kullanıcı bilgisayarına kaydetmek için bir kaydetme diyaloğu açın. IPython env'de test ettim ve bir çekicilik gibi çalışıyor! Ben \n
kaçan am
Not. Bunu yapmazsam, js komut dizisi CSV değişkenini birden çok satıra yazacaktır. Örneğin
Buna print "var csv = '%s'" % industries_revenues.to_csv(index=False).replace('\n','\\n')
sonuçları:
var csv = 'Industry,sum_Amount
Banking,65892584.0
(...)
Finance,20211917.0
'
Ben de '
değil kaçış: Bir çoklu astarlı ve bu nedenle Hatalı javascript üzerindeki sonuçları kaçan \n
olmadan
var csv = 'Industry,sum_Amount\nBanking,65892584.0\n(...)Finance,20211917.0\n'
yerine print "var csv = '%s'" % industries_revenues.to_csv(index=False)
javascript'te değişken dizeyi kırmak için
Çıkış ekleyerek Javascript hatası alıyorum! SyntaxError: missing; önce ifade Daha fazla bilgi için tarayıcınızın Javascript konsoluna bakın. – AlexLordThorsen
: Ben ipython ne soran çözmek için herhangi bir özellik vardır sanmıyorum
import base64
import pandas as pd
from IPython.display import HTML
def create_download_link(df, title = "Download CSV file", filename = "data.csv"):
csv = df.to_csv()
b64 = base64.b64encode(csv.encode())
payload = b64.decode()
html = '<a download="{filename}" href="data:text/csv;base64,{payload}" target="_blank">{title}</a>'
html = html.format(payload=payload,title=title,filename=filename)
return HTML(html)
df = pd.DataFrame(data = [[1,2],[3,4]], columns=['Col 1', 'Col 2'])
create_download_link(df)
- 1. ipython: Dizüstü bilgisayar JSON
- 2. ipython dizüstü bilgisayarı başlatma
- 3. iPython Dizüstü Bilgisayar
- 4. IPython dizüstü api var mı?
- 5. Bir ipython defterinde ses çalma
- 6. IPython Dizüstü Bilgisayar Sekmesi Tamamlandı - Dökümanı Göster
- 7. IPython dizüstü bilgisayar yüklenirken hata oluştu
- 8. Ipython: Dizüstü Bilgisayar İçerisinde Hata Ayıklama Kodu
- 9. Ipython dizüstü bilgisayarında "matplotlib.pyplot dosyasını içe aktar" "
- 10. ipython dizüstü bilgisayarında kullanılabilirlik ve makrolar yapma
- 11. IPython dizüstü işaretleme/yönlendirme hücrelerinde Metin Merkezleme?
- 12. Jupyter/IPython dizüstü bilgisayarları LaTex'e nasıl dönüştürebilirim?
- 13. Web tarayıcısını çalıştırmadan IPython dizüstü bilgisayar sunucusunu başlatın?
- 14. Etkileşimli Jupyter/IPython dizüstü bilgisayarları slayt gösterisi modunda mı?
- 15. ipython dizüstü etkileşimli fonksiyonu: kaydırma aralığı ayarlamak nasıl
- 16. Yapılandırma Jupyter dizüstü
- 17. Dosyalarımı Windows 7 dizüstü bilgisayardan Raspbian Raspberry Pi 2'ye (LAN kullanarak) nasıl bağlarım?
- 18. açık ipython dizüstü bilgisayarları (* .ipynb) salt okunur görünümde (bir html dosyası gibi)
- 19. Linux terminalinden tüm hücrelerde IPython Defter'in çıktısı nasıl temizlenir?
- 20. ipython
- 21. IPython
- 22. ImportError: dizüstü
- 23. ipython - Bir profil oluştururken ettiğimde
- 24. Ipython-sql varsayılan klasör
- 25. Jupyter dizüstü bilgisayarında bir pypy çekirdeği çalıştırmak mümkün mü?
- 26. Ipython (py 2.7) dizüstü bilgisayardaki yazı tipi boyutu ve rengi nasıl değiştirilir?
- 27. benim ipython dizüstü özünü güncellenen, ama neden güncellemek nbviewer değil mi?
- 28. i aşağıdaki ithalatı kullanmak dizüstü ipython/benim jupyter en az% 99 için
- 29. İndirme yöneticisi - limit indirme hızı
- 30. XAMPP sunucusuna ayrı bir bilgisayardan nasıl erişilir?
, ama her zaman gerçekleştirir Python rutin kodu yazabilirsiniz indirin ve kullanıcılarınız için not defterine ekleyin. Sadece bir fikir. Umarım yardımcı olur. – lrnzcig
Teşekkürler lrnzcig: bana öyle görünüyor. Önerinizi deneyebilirim. –
Merhaba, f pd.to_csv() 'ile bir csv'ye dataframe yazabilir ve daha sonra csv'yi doğrudan ipython sunucusundan açabilir ve daha sonra dosya> Download? – johnchase