คำถามติดแท็ก pandas

Pandas เป็นห้องสมุด Python สำหรับการจัดการและวิเคราะห์ข้อมูลเช่น dataframes, อนุกรมเวลาหลายมิติและชุดข้อมูลแบบตัดขวางซึ่งมักพบในสถิติ, ผลการทดลองทางวิทยาศาสตร์, เศรษฐมิติหรือการเงิน Pandas เป็นหนึ่งในห้องสมุดวิทยาศาสตร์ข้อมูลที่สำคัญใน Python

6
กำหนด dtypes คอลัมน์ดาต้าเฟรมของแพนด้า
ฉันต้องการตั้งค่าdtypes ของหลายคอลัมน์ในpd.Dataframe(ฉันมีไฟล์ที่ฉันต้องแยกวิเคราะห์ลงในลิสต์รายการด้วยตนเองเนื่องจากไฟล์ไม่สามารถแก้ไขได้pd.read_csv) import pandas as pd print pd.DataFrame([['a','1'],['b','2']], dtype={'x':'object','y':'int'}, columns=['x','y']) ฉันเข้าใจ ValueError: entry not a 2- or 3- tuple astypeวิธีเดียวที่ฉันสามารถตั้งค่าให้เป็นบ่วงโดยผ่านตัวแปรแต่ละคอลัมน์และแต่งด้วย dtypes = {'x':'object','y':'int'} mydata = pd.DataFrame([['a','1'],['b','2']], columns=['x','y']) for c in mydata.columns: mydata[c] = mydata[c].astype(dtypes[c]) print mydata['y'].dtype #=> int64 มีวิธีที่ดีกว่า?
113 python  pandas 

5
ฉันจะปล่อยหน่วยความจำที่ใช้โดยแพนด้าดาต้าเฟรมได้อย่างไร
ฉันมีไฟล์ csv ขนาดใหญ่มากที่ฉันเปิดในแพนด้าดังนี้ .... import pandas df = pandas.read_csv('large_txt_file.txt') เมื่อฉันทำสิ่งนี้การใช้หน่วยความจำของฉันจะเพิ่มขึ้น 2GB ซึ่งคาดว่าเป็นเพราะไฟล์นี้มีแถวหลายล้านแถว ปัญหาของฉันเกิดขึ้นเมื่อฉันต้องปล่อยหน่วยความจำนี้ ฉันวิ่ง .... del df อย่างไรก็ตามการใช้งานหน่วยความจำของฉันไม่ลดลง นี่เป็นแนวทางที่ไม่ถูกต้องในการปล่อยหน่วยความจำที่ใช้โดยกรอบข้อมูลแพนด้าหรือไม่? ถ้าเป็นเช่นนั้นวิธีที่เหมาะสมคืออะไร?
113 python  pandas  memory 

9
ส่งคืนหลายคอลัมน์จากการใช้แพนด้า ()
ฉันมี DataFrame แพนด้า, df_test. ประกอบด้วยคอลัมน์ 'ขนาด' ซึ่งแสดงขนาดเป็นไบต์ ฉันคำนวณ KB, MB และ GB โดยใช้รหัสต่อไปนี้: df_test = pd.DataFrame([ {'dir': '/Users/uname1', 'size': 994933}, {'dir': '/Users/uname2', 'size': 109338711}, ]) df_test['size_kb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x / 1024.0, grouping=True) + ' KB') df_test['size_mb'] = df_test['size'].astype(int).apply(lambda x: locale.format("%.1f", x / 1024.0 ** 2, grouping=True) + ' …

8
แพนด้า: วิธีที่ดีที่สุดในการเลือกคอลัมน์ทั้งหมดที่มีชื่อขึ้นต้นด้วย X
ฉันมี DataFrame: import pandas as pd import numpy as np df = pd.DataFrame({'foo.aa': [1, 2.1, np.nan, 4.7, 5.6, 6.8], 'foo.fighters': [0, 1, np.nan, 0, 0, 0], 'foo.bars': [0, 0, 0, 0, 0, 1], 'bar.baz': [5, 5, 6, 5, 5.6, 6.8], 'foo.fox': [2, 4, 1, 0, 0, 5], 'nas.foo': ['NA', 0, …


12
python pandas dataframe ไปยังพจนานุกรม
ฉันมี dataframe สองคอลัมน์และตั้งใจจะแปลงเป็น python dictionary - คอลัมน์แรกจะเป็นคีย์และคอลัมน์ที่สองจะเป็นค่า ขอบคุณล่วงหน้า. ดาต้าเฟรม: id value 0 0 10.2 1 1 5.7 2 2 7.4

5
แปลงแถวเป็นส่วนหัวของคอลัมน์สำหรับ Pandas DataFrame
ข้อมูลที่ฉันต้องจัดการมันค่อนข้างยุ่ง .. มันมีชื่อส่วนหัวอยู่ในข้อมูล ฉันจะเลือกแถวจากดาต้าเฟรมของแพนด้าที่มีอยู่แล้วทำให้ (เปลี่ยนชื่อเป็น) เป็นส่วนหัวคอลัมน์ได้อย่างไร ฉันต้องการทำสิ่งที่ชอบ: header = df[df['old_header_name1'] == 'new_header_name1'] df.columns = header

5
รับคอลัมน์ Pandas ทั้งหมด
เป้าหมาย MyColumnฉันมีกรอบข้อมูลนุ่นที่แสดงด้านล่างมีหลายคอลัมน์และต้องการที่จะได้รับรวมของคอลัมน์ กรอบข้อมูล -df: print df X MyColumn Y Z 0 A 84 13.0 69.0 1 B 76 77.0 127.0 2 C 28 69.0 16.0 3 D 28 28.0 31.0 4 E 19 20.0 85.0 5 F 84 193.0 70.0 ความพยายามของฉัน : ฉันได้พยายามหาผลรวมของคอลัมน์โดยใช้groupbyและ.sum(): Total = df.groupby['MyColumn'].sum() print Total สิ่งนี้ทำให้เกิดข้อผิดพลาดต่อไปนี้: TypeError: …
112 python  pandas  dataframe  sum 

11
วางคอลัมน์ที่มีชื่อประกอบด้วยสตริงเฉพาะจากแพนด้า DataFrame
ฉันมีดาต้าเฟรมแพนด้าที่มีชื่อคอลัมน์ต่อไปนี้: Result1, Test1, Result2, Test2, Result3, Test3 ฯลฯ ... ฉันต้องการปล่อยคอลัมน์ทั้งหมดที่มีชื่อคำว่า "Test" ตัวเลขของคอลัมน์ดังกล่าวไม่คงที่ แต่ขึ้นอยู่กับฟังก์ชันก่อนหน้า ฉันจะทำเช่นนั้นได้อย่างไร?
112 python  pandas  dataframe 

5
เรียกใช้การถดถอย OLS ด้วย Pandas Data Frame
ฉันมีpandasกรอบข้อมูลและต้องการทำนายค่าของคอลัมน์ A จากค่าในคอลัมน์ B และ C นี่คือตัวอย่างของเล่น: import pandas as pd df = pd.DataFrame({"A": [10,20,30,40,50], "B": [20, 30, 10, 40, 50], "C": [32, 234, 23, 23, 42523]}) ตามหลักการแล้วฉันจะมีบางอย่างที่คล้ายกันols(A ~ B + C, data = df)แต่เมื่อฉันดูตัวอย่างจากไลบรารีอัลกอริทึมscikit-learnดูเหมือนว่าจะฟีดข้อมูลไปยังโมเดลด้วยรายการแถวแทนที่จะเป็นคอลัมน์ สิ่งนี้ทำให้ฉันต้องฟอร์แมตข้อมูลใหม่เป็นรายการภายในลิสต์ซึ่งดูเหมือนจะเอาชนะจุดประสงค์ของการใช้แพนด้าตั้งแต่แรก วิธีใดที่เป็นวิธี pythonic ที่สุดในการเรียกใช้การถดถอย OLS (หรืออัลกอริธึมการเรียนรู้ของเครื่องโดยทั่วไป) กับข้อมูลในกรอบข้อมูลแพนด้า

4
Python: แปลง timedelta เป็น int ใน dataframe
ฉันต้องการสร้างคอลัมน์ในกรอบข้อมูลแพนด้าที่เป็นตัวแทนจำนวนเต็มของจำนวนวันในคอลัมน์ไทม์เดลตา เป็นไปได้ไหมที่จะใช้ 'datetime.days' หรือฉันต้องทำอะไรเพิ่มเติมด้วยตนเอง? คอลัมน์เวลา 7 วัน 23:29:00 น คอลัมน์จำนวนเต็มวัน 7
111 python  pandas  timedelta 

11
การต่อท้ายรายการหรือซีรีส์ใน DataFrame แพนด้าเป็นแถว?
ดังนั้นฉันจึงเริ่มต้น DataFrame แพนด้าที่ว่างเปล่าและฉันต้องการเพิ่มรายการ (หรือซีรี่ส์) ซ้ำเป็นแถวใน DataFrame นี้ วิธีที่ดีที่สุดในการทำคืออะไร?

2
ฟอร์ลูปในแพนด้าแย่จริงหรือ? ควรดูแลเมื่อใด
มีforลูปมัน "เลวร้าย"? ถ้าไม่เช่นนั้นในสถานการณ์ใดจะดีไปกว่าการใช้แนวทาง "vectorized" แบบเดิม ๆ 1 ฉันคุ้นเคยกับแนวคิดของ "vectorization" และวิธีที่แพนด้าใช้เทคนิคเวกเตอร์เพื่อเร่งความเร็วในการคำนวณ ฟังก์ชัน Vectorized จะออกอากาศการดำเนินการในทั้งซีรีส์หรือ DataFrame เพื่อให้ได้ความเร็วที่สูงกว่าการทำซ้ำตามปกติในข้อมูล อย่างไรก็ตามฉันค่อนข้างแปลกใจที่เห็นโค้ดจำนวนมาก (รวมถึงจากคำตอบใน Stack Overflow) เสนอวิธีแก้ปัญหาที่เกี่ยวข้องกับการวนซ้ำข้อมูลโดยใช้การวนซ้ำforและความเข้าใจในรายการ เอกสารประกอบและ API บอกว่าลูป "ไม่ดี" และควร "ไม่" ซ้ำในอาร์เรย์ชุดข้อมูลหรือเฟรมข้อมูล แล้วทำไมบางครั้งฉันจึงเห็นผู้ใช้แนะนำโซลูชันแบบวนซ้ำ 1 - แม้ว่าคำถามจะฟังดูกว้าง แต่ความจริงก็คือมีสถานการณ์ที่เฉพาะเจาะจงมากเมื่อforลูปมักจะดีกว่าการวนซ้ำตามอัตภาพ โพสต์นี้มีจุดมุ่งหมายเพื่อจับภาพนี้สำหรับลูกหลาน

7
Python pandas แทรกรายการลงในเซลล์
ฉันมีรายการ 'abc' และ dataframe 'df': abc = ['foo', 'bar'] df = A B 0 12 NaN 1 23 NaN ฉันต้องการแทรกรายการลงในเซลล์ 1B ดังนั้นฉันต้องการผลลัพธ์นี้: A B 0 12 NaN 1 23 ['foo', 'bar'] โฮฉันจะทำอย่างนั้นได้ไหม? 1) ถ้าฉันใช้สิ่งนี้: df.ix[1,'B'] = abc ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: ValueError: Must have equal len keys and value when setting with an …

5
แพนด้าทุกแถวที่ n
Dataframe.resample () ใช้งานได้กับข้อมูลชุดเวลาเท่านั้น ฉันไม่พบวิธีรับทุกแถวที่ n จากข้อมูลที่ไม่ใช่ชุดเวลา วิธีที่ดีที่สุดคืออะไร?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.