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

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

5
พล็อต DataFrames ที่แตกต่างกันในรูปเดียวกัน
ฉันมีไฟล์อุณหภูมิที่มีบันทึกอุณหภูมิหลายปีในรูปแบบด้านล่าง: 2012-04-12,16:13:09,20.6 2012-04-12,17:13:09,20.9 2012-04-12,18:13:09,20.6 2007-05-12,19:13:09,5.4 2007-05-12,20:13:09,20.6 2007-05-12,20:13:09,20.6 2005-08-11,11:13:09,20.6 2005-08-11,11:13:09,17.5 2005-08-13,07:13:09,20.6 2006-04-13,01:13:09,20.6 ทุกปีจะมีตัวเลขเวลาที่บันทึกแตกต่างกันดังนั้นวันที่และเวลาของแพนด้าจึงแตกต่างกัน ฉันต้องการพล็อตข้อมูลของปีที่ต่างกันในรูปเดียวกันเพื่อเปรียบเทียบ แกน X คือ ม.ค. ถึง ธ.ค. แกน Y คืออุณหภูมิ ฉันควรทำอย่างไร

6
วิธีอัปเดตพล็อตแบบไดนามิกในลูปในสมุดบันทึก Ipython (ภายในเซลล์เดียว)
สภาพแวดล้อม: Python 2.7, matplotlib 1.3, IPython notebook 1.1, linux, chrome รหัสอยู่ในเซลล์อินพุตเดียวโดยใช้--pylab=inline ฉันต้องการใช้สมุดบันทึก IPython และแพนด้าเพื่อใช้สตรีมและอัปเดตพล็อตแบบไดนามิกทุกๆ 5 วินาที เมื่อฉันใช้คำสั่งพิมพ์เพื่อพิมพ์ข้อมูลในรูปแบบข้อความมันทำงานได้ดีอย่างสมบูรณ์: เซลล์ผลลัพธ์จะเก็บข้อมูลการพิมพ์และเพิ่มแถวใหม่ แต่เมื่อฉันพยายามลงจุดข้อมูล (แล้วอัปเดตแบบวนซ้ำ) พล็อตจะไม่ปรากฏในเซลล์ผลลัพธ์ แต่ถ้าฉันลบลูปออกก็แค่ลงจุดครั้ง มันทำงานได้ดี จากนั้นฉันก็ทำการทดสอบง่ายๆ: i = pd.date_range('2013-1-1',periods=100,freq='s') while True: plot(pd.Series(data=np.random.randn(100), index=i)) #pd.Series(data=np.random.randn(100), index=i).plot() also tried this one time.sleep(5) ผลลัพธ์จะไม่แสดงอะไรเลยจนกว่าฉันจะขัดจังหวะกระบวนการด้วยตนเอง (ctrl + m + i) และหลังจากที่ฉันขัดจังหวะพล็อตจะแสดงเป็นเส้นที่ทับซ้อนกันหลายบรรทัดอย่างถูกต้อง แต่สิ่งที่ฉันต้องการจริงๆคือพล็อตที่แสดงและได้รับการอัปเดตทุก ๆ 5 วินาที (หรือเมื่อใดก็ตามที่มีplot()การเรียกใช้ฟังก์ชันเช่นเดียวกับผลลัพธ์ของคำสั่งพิมพ์ที่ฉันกล่าวถึงข้างต้นซึ่งทำงานได้ดี) …

2
Python Pandas: จัดกลุ่มตามกลุ่มและค่าเฉลี่ย?
ฉันมี dataframe แบบนี้: cluster org time 1 a 8 1 a 6 2 h 34 1 c 23 2 d 74 3 w 6 ฉันต้องการคำนวณเวลาเฉลี่ยต่อองค์กรต่อคลัสเตอร์ ผลลัพธ์ที่คาดหวัง: cluster mean(time) 1 15 ((8+6)/2+23)/2 2 54 (74+34)/2 3 6 ไม่รู้จะทำยังไงในนุ่นมีใครช่วยได้บ้าง
93 python  pandas  group-by  mean 

2
คำเตือนผู้ใช้ Python Pandas: การเรียงลำดับเนื่องจากแกนที่ไม่ต่อกันไม่ได้อยู่ในแนวเดียวกัน
ฉันกำลังฝึกโค้ดและใช้การรวมเฟรมข้อมูลในขณะที่กำลังรับคำเตือนจากผู้ใช้ /usr/lib64/python2.7/site-packages/pandas/core/frame.py:6201: FutureWarning: การเรียงลำดับเนื่องจากแกนที่ไม่ต่อกันไม่ได้อยู่ในแนวเดียวกัน แพนด้าในอนาคตจะเปลี่ยนเป็นไม่จัดเรียงตามค่าเริ่มต้น หากต้องการยอมรับพฤติกรรมในอนาคตให้ส่ง 'sort = True' ในการรักษาพฤติกรรมปัจจุบันและปิดเสียงคำเตือนให้ส่ง sort = False ในบรรทัดโค้ดเหล่านี้: คุณช่วยหาวิธีแก้ไขคำเตือนนี้ได้ไหม placement_video = [self.read_sql_vdx_summary, self.read_sql_video_km] placement_video_summary = reduce(lambda left, right: pd.merge(left, right, on='PLACEMENT', sort=False), placement_video) placement_by_video = placement_video_summary.loc[:, ["PLACEMENT", "PLACEMENT_NAME", "COST_TYPE", "PRODUCT", "VIDEONAME", "VIEW0", "VIEW25", "VIEW50", "VIEW75", "VIEW100", "ENG0", "ENG25", "ENG50", "ENG75", "ENG100", "DPE0", "DPE25", "DPE50", …
93 python  pandas 

6
ความคลุมเครือในนิยาม "แกน" ของ Pandas Dataframe / Numpy Array
ฉันสับสนมากเกี่ยวกับวิธีกำหนดแกน python และอ้างถึงแถวหรือคอลัมน์ของ DataFrame หรือไม่ พิจารณารหัสด้านล่าง: >>> df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], columns=["col1", "col2", "col3", "col4"]) >>> df col1 col2 col3 col4 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 ดังนั้นถ้าเราเรียกdf.mean(axis=1)เราจะได้ค่าเฉลี่ยในแถว: >>> df.mean(axis=1) 0 …

11
การแยก dataframe เป็นหลาย ๆ dataframes
ฉันมีดาต้าเฟรมขนาดใหญ่มาก (ประมาณ 1 ล้านแถว) พร้อมข้อมูลจากการทดสอบ (ผู้ตอบ 60 คน) ฉันต้องการแบ่ง dataframe ออกเป็น 60 dataframes (dataframe สำหรับผู้เข้าร่วมแต่ละคน) ในดาต้าเฟรมdataมีตัวแปรที่เรียกว่า'name'ซึ่งเป็นรหัสเฉพาะสำหรับผู้เข้าร่วมแต่ละคน ฉันได้ลองทำสิ่งต่อไปนี้แล้ว แต่ไม่มีอะไรเกิดขึ้น (หรือการดำเนินการไม่หยุดภายในหนึ่งชั่วโมง) สิ่งที่ฉันตั้งใจจะทำคือการแบ่งออกdataเป็นดาต้าเฟรมที่เล็กลงและต่อท้ายรายการ ( datalist): import pandas as pd def splitframe(data, name='name'): n = data[name][0] df = pd.DataFrame(columns=data.columns) datalist = [] for i in range(len(data)): if data[name][i] == n: df = df.append(data.iloc[i]) else: …

5
การแปลง Django QuerySet เป็น Panda DataFrame
ฉันจะแปลง Django QuerySet เป็นแพนด้าDataFrameดังนี้: qs = SomeModel.objects.select_related().filter(date__year=2012) q = qs.values('date', 'OtherField') df = pd.DataFrame.from_records(q) ได้ผล แต่มีวิธีที่มีประสิทธิภาพมากกว่านี้หรือไม่?
93 python  django  pandas 

4
การเรียงลำดับแบบกำหนดเองในดาต้าเฟรมของแพนด้า
ฉันมีดาต้าเฟรม python pandas ซึ่งคอลัมน์มีชื่อเดือน ฉันจะจัดเรียงแบบกำหนดเองโดยใช้พจนานุกรมได้อย่างไรตัวอย่างเช่น: custom_dict = {'March':0, 'April':1, 'Dec':3}
93 python  pandas 

1
Seaborn แสดงสัญกรณ์ทางวิทยาศาสตร์ในแผนที่ความร้อนสำหรับตัวเลข 3 หลัก
ฉันกำลังสร้างแผนที่ความร้อนจาก pivot_table แพนด้าดังต่อไปนี้: table2 = pd.pivot_table(df,values='control',columns='Year',index='Region',aggfunc=np.sum) sns.heatmap(table2,annot=True,cmap='Blues') จะสร้างแผนที่ความร้อนดังที่แสดงด้านล่าง คุณสามารถเห็นตัวเลขไม่มาก (สูงสุด 750) แต่แสดงเป็นสัญกรณ์ทางวิทยาศาสตร์ ถ้าฉันดูตารางเองก็ไม่เป็นเช่นนั้น มีความคิดอย่างไรที่จะแสดงตัวเลขในสัญกรณ์ธรรมดา

2
float64 กับแพนด้า to_csv
ฉันกำลังอ่าน CSV ที่มีตัวเลขลอยดังนี้: Bob,0.085 Alice,0.005 และนำเข้าสู่ dataframe และเขียน dataframe นี้ไปยังตำแหน่งใหม่ df = pd.read_csv(orig) df.to_csv(pandasfile) ตอนนี้pandasfileมี: Bob,0.085000000000000006 Alice,0.0050000000000000001 เกิดอะไรขึ้น? บางทีฉันอาจต้องแคสต์เป็นประเภทอื่นเช่น float32 หรืออะไร? Im ใช้หมีแพนด้า 0.9.0และ1.6.2 numpy
93 python  numpy  pandas 

4
ชุดข้อมูลตัวอย่างใน Pandas
เมื่อใช้ R จะสะดวกในการโหลดชุดข้อมูล "การปฏิบัติ" โดยใช้ data(iris) หรือ data(mtcars) นุ่นมีอะไรคล้าย ๆ กันไหม? ฉันรู้ว่าฉันสามารถโหลดได้โดยใช้วิธีอื่นแค่อยากรู้ว่ามีอะไรอยู่ในตัวหรือไม่

6
แปลงชุดหมีแพนด้าเป็น DataFrame
ฉันมีซีรีส์ Pandas sf: email email1@email.com [1.0, 0.0, 0.0] email2@email.com [2.0, 0.0, 0.0] email3@email.com [1.0, 0.0, 0.0] email4@email.com [4.0, 0.0, 0.0] email5@email.com [1.0, 0.0, 3.0] email6@email.com [1.0, 5.0, 0.0] และฉันต้องการแปลงเป็น DataFrame ต่อไปนี้: index | email | list _____________________________________________ 0 | email1@email.com | [1.0, 0.0, 0.0] 1 | email2@email.com | [2.0, 0.0, …

2
Pandas Group โดย Range of Values
มีวิธีง่ายๆในการเรียกใช้groupbyช่วงของค่าที่เพิ่มขึ้นหรือไม่? ตัวอย่างเช่นตัวอย่างด้านล่างฉันสามารถ bin และคอลัมน์กลุ่มBด้วยการ0.155เพิ่มขึ้นเพื่อให้ตัวอย่างเช่นสองกลุ่มแรกในคอลัมน์Bถูกแบ่งออกเป็นช่วงระหว่าง '0 - 0.155, 0.155 - 0.31 ... import numpy as np import pandas as pd df=pd.DataFrame({'A':np.random.random(20),'B':np.random.random(20)}) A B 0 0.383493 0.250785 1 0.572949 0.139555 2 0.652391 0.401983 3 0.214145 0.696935 4 0.848551 0.516692 หรืออีกวิธีหนึ่งฉันสามารถจัดหมวดหมู่ข้อมูลโดยการเพิ่มขึ้นเหล่านั้นลงในคอลัมน์ใหม่ก่อนแล้วจึงใช้groupbyเพื่อกำหนดสถิติที่เกี่ยวข้องที่อาจใช้ได้ในคอลัมน์A?

4
Python pandas: เก็บคอลัมน์ที่เลือกไว้เป็น DataFrame แทน Series
เมื่อเลือกคอลัมน์เดียวจากหมีแพนด้า DataFrame (พูดdf.iloc[:, 0], df['A']หรือdf.Aฯลฯ ) เวกเตอร์ส่งผลให้ถูกแปลงโดยอัตโนมัติเพื่อให้ซีรีส์แทน DataFrame คอลัมน์เดียว อย่างไรก็ตามฉันกำลังเขียนฟังก์ชันบางอย่างที่ใช้ DataFrame เป็นอาร์กิวเมนต์อินพุต ดังนั้นฉันชอบจัดการกับ DataFrame แบบคอลัมน์เดียวแทนที่จะเป็นซีรี่ส์เพื่อให้ฟังก์ชันสามารถสมมติว่าสามารถเข้าถึง df.columns ได้ ตอนนี้ผมต้องชัดเจนแปลงชุดเข้า DataFrame pd.DataFrame(df.iloc[:, 0])โดยใช้สิ่งที่ต้องการ นี่ดูเหมือนจะไม่ใช่วิธีที่สะอาดที่สุด มีวิธีที่สวยงามกว่าในการจัดทำดัชนีจาก DataFrame โดยตรงเพื่อให้ผลลัพธ์เป็น DataFrame แบบคอลัมน์เดียวแทนที่จะเป็น Series หรือไม่?
92 python  pandas 

4
เชื่อมต่อสตริงจากหลายแถวโดยใช้ Pandas groupby
ฉันต้องการรวมหลาย ๆ สตริงในดาต้าเฟรมโดยยึดตาม groupedby ใน Pandas นี่คือรหัสของฉันจนถึงตอนนี้: import pandas as pd from io import StringIO data = StringIO(""" "name1","hej","2014-11-01" "name1","du","2014-11-02" "name1","aj","2014-12-01" "name1","oj","2014-12-02" "name2","fin","2014-11-01" "name2","katt","2014-11-02" "name2","mycket","2014-12-01" "name2","lite","2014-12-01" """) # load string as stream into dataframe df = pd.read_csv(data,header=0, names=["name","text","date"],parse_dates=[2]) # add column with month df["month"] = df["date"].apply(lambda x: x.month) ฉันต้องการให้ผลลัพธ์สุดท้ายมีลักษณะดังนี้: ฉันไม่เข้าใจว่าฉันจะใช้ …

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