Daha çox

Excel elektron cədvəlindən Python lüğətinə oxumaq üçün ArcPy istifadə


Müəyyən edilmiş bir Excel cədvəlini oxuyan və dəyərləri bir lüğətə yerləşdirən bir skript yaratmağı necə davam etdirərdim?

Xlrd kitabxanası və bu cür cəhdlərdə kitabxananın Python-da Excel elektron cədvəllərini necə oxuması barədə oxudum. Ancaq ArcPy modulunda bunu ciddi şəkildə edəcəyimi ümid edirdim. Bu mümkündür və ya xlrd kitabxanasından istifadə etməyiniz istənərmi?


Digər istifadəçilərin təklifinə görə, lüğəti pythonda düzəltmək üçün SearchCursor ilə Excel-dən Table GP alətini istifadə etməlisiniz. Budur nümunə kodu:

Excel sənədindəki nümunə məlumatlar:

col1 col2 col3 --------------------- val1 val2 val3 val4 val5 val6 import arcpy inputExcel = r "D:  Test.xls" sheetName = "Sheet1" memoryTable = "in_memory" + "" + "memoryTable" # Yaddaşın boş olduğundan əmin olun arcpy.Delete_management (memoryTable) arcpy.ExcelToTable_conversion (inputExcel, memoryTable, sheetName) d = {} fieldIndices = {} fields = arcpy.ListFields (memoryTable) ) i üçün, sadalanan sahə (sahələr): d [field.name] = [] fieldIndices [i] = field.name with arcpy.da.SearchCursor (memoryTable, '*') with the kursor: for the row in the kursor: for i (0, len (sıra)) aralığında: d [fieldIndices [i]]. əlavə (sıra [i]) del kursor

Və python lüğəti:

>>> d {u'ObjectID ': [1, 2], u'col1': [u'val1 ', u'val4'], u'col2 ': [u'val2', u'val5 '], u'col3 ': [u'val3', u'val6 ']}

Ümid edirəm kömək edəcək


Əyalətlərin əhali məlumatlarını ehtiva edən bir excel oxuyun və əyalətə, bölgəyə görə xülasəni hesablayın

Excel-də "Darıxdırıcı şeyləri Python ilə avtomatlaşdırın" kitabının 13-cü fəslindəki məşq çərçivəsində, aşağıdakı məşqləri etdim:

  1. Excel elektron cədvəlindəki məlumatları oxuyur
  2. Hər bölgədəki siyahıyaalma sayını sayır
  3. Hər mahalın ümumi əhalisini sayır
  4. Nəticələri yazdırır

Burada elektron cədvəlin quruluşu

Budur mənim kodum və Python üçün yeni olduğum üçün bu kodu necə inkişaf etdirə biləcəyim barədə araşdırmalar almaq istəyirəm.


Mühərrik sığortası iddiaları üçün zərər və qənaət hesablayın

Sütunların təsvirləri bunlardır: (A) iddia ili, (B) sığortalı şirkət kimdir (C) nəqliyyat vasitəsinin sürülüb-sürülməməsi, (D) hal kodu (E) tələbin qaldırılmasında gecikmə (F) Avtomobil yaşı (G) ) Zərər (H) Qənaət.

Zərərlər və Əmanət sütunları boşdur: Sütunlara dəymiş zərərləri və qənaətləri (A) - (F) sütunlarının hər birinin çəkiləri / dəyərləri ilə doldurmalıyam. Bu sütunların çəkiləri başqa bir cədvəldə verilmişdir. Digər elektron cədvəldə yenidən 2 vərəq var (i) ziyan dəyərləri və (ii) qənaət dəyərləridir.

Sadə bir lüğət anlama kodu belə yaratdım:

Ancaq bu yanaşmadan daha yaxşı bir yanaşma / alternativin olub olmadığını yoxlamaq istədim. Bəlkə də for döngüsünün qarşısını ala biləcəyiniz daha anlaşıqlı bir yanaşma?

Burada bir çox indeksli (sütun indeksləşdirmə) yanaşma ilə kodlaşdırıldığını hiss edirəm. Orijinal verilənlər bazasında indeksləri çətinləşdirən bir çox sütun var.

Bu çəkilərin mövcud olduğu sütunların dəyərlər cədvəllərində ayrı-ayrı zərər və qənaət vərəqələri vardır. Bəlkə də hesablamaları iki dəfə etmədən problemsiz bir şəkildə daxil etmək olar?


Python-da mətn sənədlərinin oxunması

Mətn faylları məlumatları saxlamaq üçün ən çox yayılmış fayl formatlarından biridir. Python mətn sənədlərindən məlumat oxumağı çox asanlaşdırır.

Python təmin edir aç () fayl yolunu qəbul edən faylları və parametrləri kimi fayla giriş rejimini oxumaq funksiyası. Bir mətn sənədini oxumaq üçün, fayl giriş rejimi & # 8216r & # 8217. Aşağıdakı digər giriş rejimlərindən bəhs etdim:

  • bir fayl # 8216w & # 8217 & # 8211 yazı &
  • & # 8216r + & # 8217 və ya & # 8216w + & # 8217 & # 8211 & oxumaq və bir fayla yazmaq
  • & # 8216a & # 8217 & # 8211 & zaten mövcud bir fayla əlavə etmək
  • & # 8216a + & # 8217 & # 8211 & oxuduqdan sonra bir fayla əlavə edin

Python bizə mətn sənədindən məlumat oxumaq üçün üç funksiya təqdim edir:

  1. oxu (n) & # 8211 Bu funksiya mətn sənədlərindən n bayt oxuyur və ya heç bir rəqəm göstərilmədiyi təqdirdə sənəddəki bütün məlumatları oxuyur. Biri ilə qarşılaşdıqda və cümlələri ayıran zaman ayırıcıları idarə etmək üçün kifayət qədər ağıllıdır
  2. oxu xətti (n) & # 8211 Bu funksiya fayldan n bayt oxumağa imkan verir, lakin birdən çox məlumat sətirində deyil
  3. oxu xətləri () & # 8211 Bu funksiya fayldakı bütün məlumatları oxuyur, əksinə oxu (), ayırıcı xarakter barədə narahat olmur və onları siyahı formatında da yazdırır

Bu funksiyaların mətn sənədini oxumaqla necə fərqləndiyini görək:

The oxu () funksiya, sənəddəki bütün məlumatları düzgün qurulmuş formada idxal etdi.

İçərisində bir sıra təmin etməklə oxu () funksiyası, göstərilən bayt miqdarını fayldan çıxara bildik.

Istifadə olunur oxu xətti (), mətn sənədindən yalnız bir sətir çıxarıldı.


İmtina: openpyxl ilə tanış deyiləm. Ümid edirəm bu baxış cəfəngiyat olmayacaq. Mənə deyin!

Göndərilmiş kod ilk vərəqin məzmununu məlumatlara köçürür, ters (köçürülmüş?) Məzmunu yeni bir tmp_sheet-ə yazır, orijinal vərəqin atributlarını tmp_sheet-ə kopyalayır və nəhayət orijinal vərəqi silir.

Əldə etmədiyim budur ki, niyə orijinal vərəqi birbaşa yeniləməsən? Vərəq diaqonalının altındakı hüceyrələrin koordinatlarını dövrəyə sala, hüceyrənin dəyişdirmə üçün koordinatlarını hesablaya, tək dəyərləri dəyişdirmək üçün uyğun müvəqqəti yaddaşdan istifadə edə bilərsiniz. Çapraz tək qala bilər, heç bir şeylə dəyişdirilməsinə ehtiyac yoxdur.

Bu yanaşmanın üstünlükləri var ki, faylda birdən çox vərəq varsa, ilk vərəqin məzmunu birinci vərəqdə qalacaq və başlıq kimi vərəqin xüsusiyyətlərini kopyalamaqdan narahat olmayın.


Excel sənədindən birdən çox DataFrames-ə birdən çox iş səhifəsi yükləyin

Elektron cədvələ bu linkdəki istinadlar hissəsinin yuxarı hissəsində baxmaq olar.

Matç ehtimallarını hesablamaq üçün STR DNA lokus tezlikləri üçün bir nəşrdir. Bir matç ehtimalı kalkulyatoru düzəltmək və yalnız bir yox, yüz minlərlə hesablama aparmaq üçün böyütmək istərdim. İlk addım tezliklərin yaddaşa yüklənməsi və bu kodun mövzusudur. Hər bir əhali dəsti üçün bir məlumat çərçivəsinin yaxşı olacağını düşündüm.

Birinci sıra hər iş səhifəsində yalnız populyasiya etiketidir. Buna məhəl qoyula bilməz.

İkinci sıra başlıqdır: İlk sütun & quotAllele & quot; STR allel zəngidir. Uyğunlaşma ilə müqayisə ediləcək şey budur. Bu, ümumiyyətlə bir tam olacaq, lakin bəzən ən çox .1, .2 və .3-lük bir onluq ola bilər. Bəzən onlar simvoldan böyük və ya daha kiçik bir simvoldur (məs. & Quot & lt9.2 & quot, & quot & gt17 & quot), Excel faylında birinin olub olmadığını bilmirəm.

2-dən 25-ə qədər sütunlar sınaqdan keçirilmiş fərqli yerlərdir. Hər biri müstəqildir.

25-ci sütundan sonra və tezliklərin sonuncu sətrindən keçən hər hansı bir şeyə məhəl qoymayacağam. Bu sərhədlər daxilindəki məlumat nöqtələrinin əksəriyyəti boşdur. Minimum allel tezliyi adlanan ilə doldurulacaqlar. Başqa bir şeylə maraqlansanız söhbət etməkdən məmnun olaram, amma yəqin ki, müzakirəyə aid deyil.

Bunu etmək üçün daha zərif bir yol və ehtimal ki, daha sürətli bir yol olduğuna əminəm. Ona görə burdayam. Bunu qoymaq üçün daha yaxşı bir quruluş və ya daha sürətli / daha zərif bir yol varsa, xahiş edirəm mənə bildirin. Bu ona vurduğum ilk bıçaqdır. Çərçivələrin bütün məlumatları yükləməsi təxminən 3 saniyə çəkir. Düşünürəm ki, bundan daha tez olmalıdır. Hər halda, kodum budur.


Word cədvəllərinin məzmununu elektron cədvələ yazın

Keçən il keçmiş həmkarım üçün bu ssenarini yazmışdım. Bir yerə bir verilənlər bazasından atılmış olması lazım olan təxminən 600 cədvəldən ibarət bir Word sənədi almışdı. Cədvəllər eyni başlığa sahib idi və hər cədvəl tarixləri, detalları və s. İlə & # 8220incident & # 8221 təmsil edirdi.

Ondan Excel-ə daxil edilməsi & # 8220 istəndi. İlk cədvəli elektron tablodakı uyğun sütunlara əl ilə kopyaladıqdan sonra yanıma gəldi. Bu tip şeylər normal olaraq bir şagirdə verəcəyimiz bir tapşırıqdır, çünki CİS ilə heç bir əlaqəsi yoxdur. Buna baxmayaraq, təkrarlanan quruluşu görəndə bunu avtomatik olaraq etmək üçün bir şey fikirləşə biləcəyimə əmin idim.

idxal docx
idxal xlwt
doc = r & quotC: Some Arb Folder input.docx & quot
xls = r & quotC: Some Arb Folder output.xls & quot
sənəd = docx. Sənəd (sənəd)
kitab = xlwt. İş dəftəri ()
cur_sheet = kitab. add_sheet (& quotCədvəllər & quot)
sıra_sayı = 0
cədvəllər = sənəd. tablolar # Docxdakı bütün cədvəlləri əldə edin
# Başlıq cərgəsini 1-ci cədvəldən və # 39-cu sətirdən alın
sadalamaqdakı indeks, xana üçün (cədvəllər [0]. sətirlər [0]. xanalar):
cur_sheet. yaz (sıra_sayı, indeks, xana. mətn)
masalardakı masa üçün:
cədvəldəki sıra üçün. satırlar [1:]: # Hər cədvəlin təkrarlanan başlıq sətrini atlayın
sıra_sayı + = 1
siyahıdakı hücrə (sətir. hüceyrələr):
əgər hücrə! = & # 39 & # 39:
cur_sheet. yaz (sıra_sayı, indeks, xana. mətn. zolaq ())
kitab . qazanc (xls)

Ssenari sənəddəki bütün cədvəlləri tapır və cədvəldəki başlıqlar kimi xidmət etmək üçün başlığı birinci cədvəldən alır. Sonra bütün cədvəllərin üstündən təkrarlanır, başlıq sətrini atlayır və cədvəli müxtəlif cədvəllərin bütün sətirləri ilə doldurur.

Yazmaq üçün təxminən 15 dəqiqə (cədvəl elementlərinə düzgün daxil olmaqla oynamaq lazım idi) və məlumatları çıxarmaq üçün bir dəqiqədən az vaxt sərf edildi. 5 cədvəlin əl ilə kopyalanması üçün lazım olan vaxt. Bu tempdə prosesi tamamlamaq təxminən 4 gün çəkərdi.


Libexcel-yazıçı-xlsx-perl

Excel :: Writer :: XLSX modulu 2007+ XLSX formatında bir Excel faylı yaratmaq üçün istifadə edilə bilər.

Bir iş kitabına birdən çox iş səhifəsi əlavə edilə bilər və format hüceyrələrə tətbiq oluna bilər. Mətn, rəqəm və düsturlar hüceyrələrə yazıla bilər.

Excel :: Writer :: XLSX, Excel sənədini ikili XLS formatında istehsal edən Spreadsheet :: WriteExcel modulu ilə eyni interfeysdən istifadə edir.

Excel :: Writer :: XLSX Spreadsheet :: WriteExcel-in bütün xüsusiyyətlərini dəstəkləyir və bəzi hallarda daha çox funksionallığa malikdir. Daha ətraflı məlumat üçün Spreadsheet :: WriteExcel ilə uyğunluq bölməsinə baxın.

XLSX formatının XLS formatından əsas üstünlüyü, iş səhifəsində daha çox sayda sətir və sütuna imkan verməsidir.

XLSX fayl formatı, XLS fayl formatından daha kiçik fayllar da istehsal edir.


Bir fikir & ldquo Geocoder və pandas və rdquo istifadə edərək coğrafi kod elektron cədvəl koordinatlarını tərs etmək

Mükəmməl bir yazı, coğrafi kodlayıcı haqqında məlumatınız yox idi! Həm də bu günlərdə coğrafi kodlaşdırma üçün ən populyar alternativlərdən biri olduğunu düşündüyüm geopy Python paketini istifadə etməyi düşünün.

Bir cavab buraxın Cavabı ləğv edin

Bu sayt spamları azaltmaq üçün Akismetdən istifadə edir. Şərh məlumatlarınızın necə işləndiyini öyrənin.

Mən Cindyəm və bu geoinformatika (CİS / verilənlər bazaları / coğrafi elm), proqramlaşdırma və ömür boyu öyrənmə haqqında blogumdur.


Javascript istifadə edərək Excel / Elektron Cədvəli mövcud bir Sharepoint Siyahısına necə gətirmək olar

Bir excel hesabatının bəzi məlumatlarını mövcud siyahıya idxal etmək istəyirəm. Bunun güc qabığı və ya C # istifadə edərək edilə biləcəyini görürəm.

Kimsə mənə bir veb hissə əlavə edərək JavaScript istifadə edərək bu işdə kömək edə bilərmi? düyməni basmaqla düzgün vərəqi seçdiyimiz zaman excel hesabatı yükləməyimizə imkan verən bir düyməyə sahib olmaq üçün zəruri sütunları vərəqdən götürüb siyahıya əlavə etmək lazımdır, əgər hər hansı bir şey köhnələrə dəyişdirilibsə yenilənəcəkdir.

Xahiş edirəm kimsə bunun həlli yolunda mənə kömək edir.


Videoya baxın: Learning Python with GIS: A Lecture for the Absolute Beginner: Part 1 of 5 ArcGIS Pro Python Tour (Oktyabr 2021).