Birkaç saniyede 30.000'den fazla veriyi işlemek için Python kullanıyorum

Yeniden basıldı: Smart Demo

Bu makale 1542 kelime , Okumanız tavsiye edilir 4 dakika .

Bu makale, hızlı işlem sağlamak için MySQL veritabanına bağlanmak için Python kullanarak örnek olarak 17 txt metni ve 30.000'den fazla veri kullanır.

Uygulama senaryosu : Çalışırken, genellikle büyük miktarda verinin entegre edilmesi, tekilleştirilmesi ve belirli bir biçimde dışa aktarılması gereken durumlarla karşılaşırız. Çalıştırmak için Excel kullanıyorsanız, bu sadece zaman alıcı ve zahmetli olmakla kalmaz, aynı zamanda yanlıştır.Daha verimli bir çözüm var mı?

Bu makale, hızlı işlem sağlamak için MySQL veritabanına bağlanmak için Python kullanarak örnek olarak 17 txt metni ve 30.000'den fazla veri kullanır.

Diğerleri fazla mesai yapıyor, küçük Python asistanım bunu birkaç saniye içinde yapabilir!

Bu makale esas olarak aşağıdaki üç yönü içermektedir:

  • Veri yazma
  • Veri tekilleştirme
  • Veri çıkışı

MySQL veritabanına veri yaz

Aşağıdaki şekilde gösterilen dosya bu makalenin veri kaynağıdır:

Bizim fikrimiz küçük bir program yazmak, onu bu klasöre atmak ve her bir txt dosyasındaki verileri otomatik olarak okumak ve veritabanına yazmak için çift tıklamaktır.

kod aşağıdaki gibi gösterilir:

import pymysqlimport osconn = pymysql.connect (host = 'localhost', user = 'root', password = '123456', db = 'qq', charset = 'utf8') cur = conn.cursor () cur.execute (" CREATE TABLE qq (id int (5) NOT NULL auto_increment, qq varchar (20) NOT NULL, PRIMARY KEY (id)); ") conn.commit () yol = os.getcwd () files = os.listdir (yol) Dosyalardaki dosya için i = 0: f = open (dosya, 'r', kodlama = 'UTF-8') sonraki (f) f: i + = 1 #print (satır) sql = "qq ( qq) değerler (% s); "cur.execute (sql, line) print (" Birinciyi ekle ", i," veri! ") conn.commit () f.close () cur.close () conn.close ()

çalışan sonuç:

Anahtar kod açıklaması:

Bu kod, pymysql ve os olmak üzere iki kitaplık kullanır.

  • pymysql: MySQL veritabanını çalıştırmak için kullanılır;
  • os: Klasördeki tüm dosyalar arasında gezinmek için kullanılır.

Ana kod aşağıda açıklanmıştır:

1. Herhangi bir klasördeki tüm dosya adlarını çaprazlayın

Program yazıldıktan sonra, onu bir exe programına paketlemek için pyinstaller kullanın ve çalıştırılacak klasörün altına yerleştirin.

Path = os.getcwd () komutuyla exe dosyasının bulunduğu dizini alın.

Exe dosyasının bulunduğu dizindeki tüm dosya adlarını almak ve bunları dosyalar listesine kaydetmek için files = os.listdir (yol) komutunu kullanın.

Bu şekilde tüm txt dosya adlarına sahibiz, txt dosyanızı keyfi olarak adlandırabilirsiniz, program okuyabilir.

2. Verileri veritabanına yazın

(1) Veritabanına bağlanın ve veritabanında yeni bir tablo oluşturun

A. qq veritabanıma bağlan

conn = pymysql.connect (host = 'localhost', user = 'root', password = '123456', db = 'qq', charset = 'utf8')

B. Yeni bir tablo qq oluşturun

Qq veritabanında yeni bir tablo oluşturun. Tablonun adı qq'dir. 2 alan içerir: id alanı birincil anahtardır ve otomatik olarak artırılır; qq alanı bir karakter türüdür ve verileri depolamak için kullanılır.

cur.execute ("CREATE TABLE qq (id int (5) NOT NULL auto_increment, qq varchar (20) NOT NULL, PRIMARY KEY (id))")

(2) Verileri veritabanına yaz

Burada iki katman döngü kullanılır:

dosyalardaki dosya için: f = open (file, 'r', encoding = 'UTF-8') next (f) f'deki satır için: i + = 1 #print (satır) sql = "qq (qq) içine ekle değerler (% s); "cur.execute (sql, line) print (" Birinciyi ekle ", i," veri! ") conn.commit () f.close ()

İlk döngü, yukarıdaki 17 txt dosyasını sırayla açmak için kullanılır.

İkinci döngü, her bir txt dosyasının her satırını sırayla okumak ve değiştirilen satır verilerini veritabanı tablosu qq'nin qq alanına yerleştirmektir.

Bu noktada toplam 32073 verinin içe aktarımı tamamlanmıştır.

Veri temizleme

Yinelenenleri kaldırmanın bir örneği ve kısaca veri temizlemeyi tanıtıyoruz.

1. Temizlenen verileri depolamak için yeni bir tablo oluşturun

Cmd penceresinin altında MySQL'de oturum açabilir, qq veritabanını açabilir ve aşağıdaki işlemleri gerçekleştirebilirsiniz:

CREATE TABLE qq_dist (id int (5) NOT NULL auto_increment, qq varchar (20) NOT NULL, PRIMARY KEY (id));

Bu şekilde, temizlenen verileri daha sonra geri çağırmak üzere depolamak için yeni bir qq_dist tablosu oluşturulur.

2. Verileri temizleyin

MySQL'de oturum açtıktan sonra aşağıdaki işlemleri gerçekleştirin:

qq_dis (qq) içine ekleyin qq'dan farklı qq seçin;

Qq tablosunda bulunan benzersiz qq alanı içeriğini qq_dist tablosundaki qq alanına ekleyin.

Verileri belirli bir formatta dışa aktarın

Durum : Temizlenmiş verilerin 101-200 satırlarını yeni bir txt metnine aktarın.

kod aşağıdaki gibi gösterilir:

import pymysqlconn = pymysql.connect (host = 'localhost', user = 'root', password = '123456', db = 'wxid', charset = 'utf8') print ("Yazıyor, lütfen bekleyin ...") cur = conn.cursor () sql = "wd_dis limit 100,100'den wxid seçin;" cur.execute (sql) conn.commit () alldata = cur.fetchall () f = open ('data101-200.txt', 'a ') i = 0 tüm verilerdeki veriler için: i + = 1 f.write (data) f.flush () f.closecur.close () conn.close () print ("yazma tamamlandı, {} veri yaz ! ". Biçim (i))

Anahtar kod açıklaması:

1, sınır

MySQL'de limit m, n fonksiyonunun anlamı şudur: m + 1. satırdan n satır okuyun.

Bu durumda 101-200. satırı okuyun, sınır 100.100'dür.

2. flush ()

Flush () fonksiyonu eklenmelidir, tampondaki verileri dosyaya yazabilir. Aksi takdirde, oluşturulan txt dosyasının boş olduğuna dair bir hata olacaktır.

-Bitiş-

Tsinghua-Qingdao Veri Bilimi Enstitüsü'nün resmi WeChat kamu platformunu takip edin " THU Veri Pastası "Ve kız kardeş numarası" Veri Pastası THU "Daha fazla ders avantajı ve kaliteli içerik elde edin.

Yeni koronavirüsün R değeri 2.90 ve 2.92'dir ve AI güdümlü algoritma Wuhan pnömonisine karşı başarılı bir şekilde uyarıyor
önceki
Liberal sanat öğrencileri tarafından anlaşılabilecek makine öğrenimi dersleri: gradyan iniş, doğrusal regresyon, lojistik regresyon
Sonraki
Programlama dünyası dünyanın en iyi 10 algoritmasına hükmediyor, kaç tanesini biliyorsunuz?
Bir bakışta 2020 trendleri: AutoML, birleşik öğrenme ve bulut oligarkları çağının sonu (bağlantı)
Derin öğrenmede anlamanız gereken 13 olasılık dağılımı
"Şehri kapatmaktan" daha iyi, medya raporları salgının yayılmasını büyük ölçüde azaltabilir
kapsamlı! Karar ağaçlarını nasıl görselleştireceğinizi öğretin (bağlantı kodu ile)
Reddit oylaması: 2019'da kaçırmamanız gereken makine öğrenimi belgeleri
Pekin Üniversitesi Matematik Bölümü'nden mezun olan UIUC Yardımcı Doçent, 60 sayfalık kağıt inceleme derin öğrenme optimizasyonu
Musk, insan uzay uçuşunda yeni bir başarı yaratıyor! Roket havaya uçtu ve insanlı kabin başarıyla kaçtı
Ortak kayıp fonksiyonlarının ve değerlendirme göstergelerinin özeti (kodlu)
Ciddiyetini kaybeden anne, Ali'den yardım ister: Ölen kızını yapay zekaya dönüştür ve 3 ay sonra kızının sesini yeniden üret
Yüz tanıma siyah teknolojisinin gerçek tehlikesi nedir?
Makine öğrenimi matematiğini ve teorik temeli geliştirmek için 7 kitap (makalenin sonunda kaynaklarla birlikte indirin!)
To Top