יותר

באמצעות ArcPy לקריאה מגיליון אלקטרוני של Excel למילון פייתון

באמצעות ArcPy לקריאה מגיליון אלקטרוני של Excel למילון פייתון


כיצד אוכל ליצור סקריפט הקורא גיליון אלקטרוני מצוין ומציב את הערכים במילון?

קראתי על ספריית xlrd ועל האופן שבו הספרייה מנסה לקרוא גיליונות אלקטרוניים של Excel בפייתון. עם זאת, קיוויתי לעשות זאת בקפידה במודול ArcPy. האם זה אפשרי או שתידרש להשתמש בספריית xlrd?


לפי הצעת משתמשים אחרים, עליך להשתמש בכלי Excel to Table GP עם SearchCursor כדי לבנות את המילון בפייתון. הנה קוד לדוגמא:

נתוני דוגמה בקובץ Excel:

col1 col2 col3 --------------------- val1 val2 val3 val4 val5 val6 יבוא arcpy inputExcel = r "D:  Test.xls" sheetName = "Sheet1" memoryTable = "in_memory" + "" + "memoryTable" # וודא שהזיכרון ריק arcpy.Delete_management (memoryTable) arcpy.ExcelToTable_conversion (inputExcel, memoryTable, sheetName) d = {} fieldIndices = {} שדות = arcpy.ListFields (memoryTable ) עבור i, שדה בספירה (שדות): d [field.name] = [] fieldIndices [i] = field.name עם arcpy.da.SearchCursor (MemoryTable, '*') כסמן: לשורה בסמן: עבור אני בטווח (0, len (שורה)): d [fieldIndices [i]]. הוסף (שורה [i]) סמן דל

ומילון פיתון הפלט:

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

אני מקווה שזה עוזר


לקרוא אקסל המכיל נתוני אוכלוסייה של מחוזות ולחשב סיכומים לפי מדינה, מחוז

במסגרת התרגיל בספר "אוטומט את הדברים המשעממים עם פייתון" פרק 13 באקסל, עברתי את התרגיל הבא:

  1. קורא את הנתונים מהגיליון האלקטרוני של Excel
  2. מונה את מספר מספרי המפקד בכל מחוז
  3. מונה את האוכלוסייה הכוללת של כל מחוז
  4. מדפיס את התוצאות

הנה מבנה הגיליון האלקטרוני

הנה הקוד שלי ואני רוצה לקבל ביקורות על האופן שבו אני יכול לשפר את הקוד הזה מכיוון שאני די חדש בפייתון.


חישוב נזקים וחסכון בתביעות ביטוח רכב

תיאורי העמודים הם: (א) שנת התביעה, (ב) מי החברה המבטחת (ג) האם הרכב מונע, (ד) קוד הנסיבות (ה) עיכוב בהעלאת התביעה (ו) גיל הרכב (ז) ) נזקים (ח) חיסכון.

עמודות נזקים וחיסכון ריקות: עלי למלא את עמודות הנזקים והחיסכון במשקלים / ערכים של כל אחת מהעמודות (A) עד (F). משקלם של עמודות אלה ניתן בגיליון אלקטרוני אחר. בגיליון האלקטרוני השני יש שני גיליונות שוב (i) הוא ערכי נזק ו- (ii) הוא ערכי חיסכון.

יצרתי קוד הבנה פשוט של מילון כזה:

עם זאת, רציתי לבדוק אם יש גישה / אלטרנטיבה טובה יותר מגישה זו. אולי גישה מבוססת הבנה יותר שבה ניתן להימנע מהלולאות?

אני מרגיש שזה קצת מקודד כאן, עם הרבה אינדקסים (אינדקס עמודות) בשימוש. במערך הנתונים המקורי יש עמודות רבות המספקות את האינדקסים יכולות להיות מסורבלות.

בגיליונות האלקטרוניים של הערכים של העמודות בהן משקלים אלה קיימים גיליונות נזקים וחיסכון נפרדים. אולי ניתן לכלול זאת בצורה חלקה מבלי לבצע את החישובים פעמיים?


קריאת קבצי טקסט בפייתון

קבצי טקסט הם אחד הפורמטים הנפוצים ביותר לאחסון נתונים. פייתון מקל מאוד על קריאת נתונים מקבצי טקסט.

פייתון מספק את לִפְתוֹחַ() פונקציה לקריאת קבצים המשתמשים בנתיב הקובץ ובמצב הגישה לקבצים כפרמטרים שלו. לקריאת קובץ טקסט, מצב הגישה לקובץ הוא & # 8216r & # 8217. הזכרתי את מצבי הגישה האחרים להלן:

  • & # 8216w & # 8217 & # 8211 כותב לקובץ
  • & # 8216r + & # 8217 או & # 8216w + & # 8217 & # 8211 לקרוא ולכתוב לקובץ
  • & # 8216a & # 8217 & # 8211 המצורפים לקובץ שכבר קיים
  • & # 8216a + & # 8217 & # 8211 מוסיפים לקובץ לאחר הקריאה

פייתון מספק לנו שלוש פונקציות לקריאת נתונים מקובץ טקסט:

  1. קרא (n) & # 8211 פונקציה זו קוראת n בתים מקובצי הטקסט או קוראת את המידע המלא מהקובץ אם לא מוגדר מספר. זה מספיק חכם כדי להתמודד עם המפרידים כאשר הוא נתקל באחד ומפריד בין המשפטים
  2. שורת קריאה (n) & # 8211 פונקציה זו מאפשרת לך לקרוא n בתים מהקובץ אך לא יותר משורת מידע אחת
  3. שורות קריאה () & # 8211 פונקציה זו קוראת את המידע המלא בקובץ אך לא דומה לקרוא(), זה לא מפריע לדמות התוחמת ומדפיס אותם גם בפורמט רשימה

הבה נראה כיצד פונקציות אלה נבדלות בקריאת קובץ טקסט:

ה לקרוא() פונקציה ייבאה את כל הנתונים בקובץ בצורה מובנית נכונה.

על ידי מתן מספר ב לקרוא() פונקציה, הצלחנו לחלץ את כמות הבתים שצוינה מהקובץ.

באמצעות קריאת שורה(), רק שורה אחת מקובץ הטקסט חולצה.


הצהרת אחריות: אני לא מכיר את openpyxl. אני מקווה שהביקורת הזו לא תהיה שטות. תגידי לי!

הקוד שפורסם מעתיק את תוכן הגיליון הראשון לנתונים, כותב תוכן הפוך (מועבר?) לגיליון חדש tmp_sheet, מעתיק תכונות של הגיליון המקורי ל- tmp_sheet ולבסוף מוחק את הגיליון המקורי.

מה שאני לא מקבל הוא מדוע לא לעדכן את הגיליון המקורי ישירות? אתה יכול לולאה על קואורדינטות של התאים מתחת לאלכסון הגיליון, לחשב את הקואורדינטות של התא להחליף איתו, להשתמש באחסון זמני מתאים להחלפת ערכים בודדים. את האלכסון אפשר להשאיר לבד, אין צורך להחליף אותם בשום דבר.

לגישה זו יתרונות הם שאם ישנם מספר גיליונות בקובץ, תוכן הגיליון הראשון יישאר בגליון הראשון, ואינך צריך לדאוג לגבי מאפייני העתקה של הגיליון כמו הכותרת.


טען מספר דפי עבודה מקובץ Excel למספר DataFrames

את הגיליון האלקטרוני ניתן למצוא ממש מעל סעיף ההפניות בקישור זה.

זהו פרסום לתדרי לוקוס STR של DNA לחישוב הסתברויות התאמה. ברצוני לבנות מחשבון הסתברות התאמה ולגדול אותו בכדי לבצע מאות אלפי חישובים ולא רק אחד. השלב הראשון הוא טעינת התדרים בזיכרון והוא נושא הקוד הזה. חשבתי שמסגרת נתונים עבור כל אוכלוסייה תהיה בסדר.

השורה הראשונה בכל גליון עבודה הוא רק תווית אוכלוסייה. אפשר להתעלם מזה.

השורה השנייה היא הכותרת הראשית: העמודה הראשונה & quotAllele & quot היא שיחת האלל STR. זה מה שיושווה עבור התאמה. בדרך כלל זה יהיה מספר שלם אך לפעמים יכול להיות שעשרוני הוא .1, .2 או .3 הנפוץ ביותר. לפעמים הם מחרוזת עם סמל גדול או פחות מסמל (למשל & quot & lt9.2 & quot, & quot & gt17 & quot) אם כי אני לא יודע אם יש כאלה בקובץ ה- Excel.

העמודות 2 עד 25 הן המיקומים השונים שנבדקים. כל אחד הוא עצמאי.

אני אתעלם מכל דבר אחרי הטור ה -25 וכל מה שעבר את שורת התדרים האחרונה. מרבית נקודות הנתונים בגבולות אלה ריקות. הם יתמלאו במה שמכונה תדר אלל מינימלי. אם אתם מעוניינים במשהו נוסף אשמח לשוחח בצ'אט, אך כנראה שזה לא רלוונטי לדיון הנדון.

אני בטוח שיש דרך אלגנטית יותר לעשות זאת וכנראה דרך מהירה יותר לעשות זאת. בגלל זה אני כאן. אם יש מבנה טוב יותר להכניס את זה, או דרך מהירה / אלגנטית יותר לעשות זאת, אנא יידע אותי. זו הדקירה הראשונה שלי בזה. למסגרות לוקח כ -3 שניות לטעון את כל הנתונים. אני מנחש שזה צריך להיות הרבה יותר מהיר מזה. בכל מקרה, הנה הקוד שלי.


כתוב תוכן של טבלאות Word לגיליון אלקטרוני

כתבתי את התסריט הזה לעמית לשעבר בשנה שעברה. היא קיבלה מסמך וורד המכיל כ 600 טבלאות שבוודאי הושלכו ממסד נתונים איפשהו. לשולחנות היה כותרת זהה, וכל טבלה ייצגה & # 8220 מקרית & # 8221, עם תאריכים, פרטים וכו '.

היא התבקשה & # 8220 להזין את זה ל- Excel & # 8221. לאחר שהעתיקה ידנית את הטבלה הראשונה לעמודות תואמות בגיליון אלקטרוני, היא הגיעה אליי. דבר מסוג זה הוא בדרך כלל משימה שהיינו נותנים לתלמיד, מכיוון שאין לה שום קשר ל- GIS. עם זאת, כשראיתי את המבנה החוזר והייתי בטוח הייתי יכול להמציא משהו שיעשה זאת באופן אוטומטי.

ייבוא ​​docx
ייבא xlwt
doc = r & quotC: Some Arb Folder input.docx & quot
xls = r & quotC: Some Arb Folder output.xls & quot
מסמך = docx. מסמך (דוק)
ספר = xlwt. חוברת עבודה ()
cur_sheet = ספר. add_sheet (& quotTables & quot)
row_num = 0
טבלאות = מסמך. טבלאות # קבל את כל הטבלאות ב- docx
# קבל את שורת הכותרת מהטבלה הראשונה והשורה הראשונה של השורה הראשונה
לאינדקס, תא בספירה (טבלאות [0]. שורות [0]. תאים):
גליון cur_. כתוב (שורה_מספר, אינדקס, תא טקסט)
לשולחן בטבלאות:
לשורה בטבלה. שורות [1:]: # דלג על שורת הכותרת החוזרת של כל טבלה
שורה_ מספר + = 1
לאינדקס, תא במניין (שורה. תאים):
אם תא! = & # 39 & # 39:
גליון cur_. כתוב (שורה_מספר, אינדקס, תא. טקסט. רצועה ())
ספר. שמור (xls)

התסריט מוצא את כל הטבלאות במסמך ותופס את הכותרת מהטבלה הראשונה כדי לשמש ככותרות בגיליון האלקטרוני. לאחר מכן הוא מגלגל את כל הטבלאות, מדלג על שורת הכותרת ומאכלס את הגיליון האלקטרוני עם כל השורות מהטבלאות השונות.

לקח כ -15 דקות לכתוב (היה צריך לשחק עם גישה נכונה לאלמנטים בטבלה) ופחות מדקה כדי לחלץ את הנתונים. זה משך הזמן שלוקח 5 מהטבלאות באופן ידני. בקצב זה היה לוקח כ -4 ימים להשלים את התהליך.


Libexcel-writer-xlsx-perl

ניתן להשתמש במודול Excel :: Writer :: XLSX ליצירת קובץ Excel בפורמט 2007+ XLSX.

ניתן להוסיף מספר חוברות עבודה לחוברת עבודה וליישם עיצוב על תאים. ניתן לכתוב טקסט, מספרים ונוסחאות לתאים.

Excel :: Writer :: XLSX משתמש באותו ממשק כמו מודול גיליון אלקטרוני :: WriteExcel המייצר קובץ Excel בפורמט XLS בינארי.

Excel :: Writer :: XLSX תומך בכל התכונות של גיליון אלקטרוני :: WriteExcel ובמקרים מסוימים יש יותר פונקציונליות. לפרטים נוספים ראו תאימות לגיליון אלקטרוני :: WriteExcel.

היתרון העיקרי של פורמט XLSX על פני פורמט XLS הוא בכך שהוא מאפשר מספר גדול יותר של שורות ועמודות בגליון עבודה.

פורמט הקובץ XLSX מייצר גם קבצים קטנים בהרבה מפורמט הקובץ XLS.


מחשבה אחת על & ldquo הפוך קואורדינטות של גיליון אלקטרוני עם קידוד גיאוגרפי ופנדות & rdquo

פוסט נהדר, לא ידעת על קידוד גיאוגרפי! כמו כן, שקול להשתמש בחבילת פייתון הגאופית שלדעתי כיום היא אחת החלופות הפופולריות ביותר לקידוד גיאוגרפי.

השאר תגובה בטל תגובה

אתר זה משתמש ב- Akismet להפחתת דואר זבל. למד כיצד מעובדים נתוני התגובות שלך.

אני סינדי, וזה הבלוג שלי על גיאואינפורמטיקה (GIS / מאגרי מידע / מדע גיאוגרפי), תכנות ולמידה לכל החיים.


כיצד לייבא את Excel / גיליון אלקטרוני לרשימת Sharepoint קיימת באמצעות Javascript

ברצוני לייבא כמה נתונים של גיליון Excel לרשימה קיימת. אני רואה שניתן לעשות זאת באמצעות מעטפת חשמל או באמצעות C #.

האם מישהו יכול לעזור לי לעשות זאת באמצעות JavaScript על ידי הוספת web part. שיהיה כפתור שעל ידי לחיצה אמור לאפשר לנו להעלות גיליון אקסל כשבחרנו את הגיליון הנכון הוא צריך לקחת את העמודות הדרושות מהגיליון ולהוסיף לרשימה אם משהו השתנה לישנים ואז הוא יעודכן.

חביב שמישהו יעזור לי למצוא פיתרון לכך.