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

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

6
วิธีตรวจสอบ dtype ของคอลัมน์ใน python panda
ฉันจำเป็นต้องใช้ฟังก์ชันต่างๆเพื่อจัดการคอลัมน์ตัวเลขและคอลัมน์สตริง สิ่งที่ฉันทำตอนนี้มันโง่จริงๆ: allc = list((agg.loc[:, (agg.dtypes==np.float64)|(agg.dtypes==np.int)]).columns) for y in allc: treat_numeric(agg[y]) allc = list((agg.loc[:, (agg.dtypes!=np.float64)&(agg.dtypes!=np.int)]).columns) for y in allc: treat_str(agg[y]) มีวิธีที่หรูหรากว่านี้ไหม? เช่น for y in agg.columns: if(dtype(agg[y]) == 'string'): treat_str(agg[y]) elif(dtype(agg[y]) != 'string'): treat_numeric(agg[y])
135 python  pandas 

9
ImportError: ไม่มีโมดูลชื่อ dateutil.parser
ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อนำเข้าpandasในPythonโปรแกรม monas-mbp:book mona$ sudo pip install python-dateutil Requirement already satisfied (use --upgrade to upgrade): python-dateutil in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python Cleaning up... monas-mbp:book mona$ python t1.py No module named dateutil.parser Traceback (most recent call last): File "t1.py", line 4, in <module> import pandas as pd File "/Library/Python/2.7/site-packages/pandas/__init__.py", line 6, in <module> from . …
134 python  pandas  pip 

14
วิธีการพิมพ์วัตถุ groupby
ฉันต้องการพิมพ์ผลลัพธ์ของการจัดกลุ่มกับนุ่น ฉันมีดาต้าเฟรม: import pandas as pd df = pd.DataFrame({'A': ['one', 'one', 'two', 'three', 'three', 'one'], 'B': range(6)}) print(df) A B 0 one 0 1 one 1 2 two 2 3 three 3 4 three 4 5 one 5 เมื่อพิมพ์หลังจากจัดกลุ่มตาม 'A' ฉันมีสิ่งต่อไปนี้: print(df.groupby('A')) <pandas.core.groupby.DataFrameGroupBy object at 0x05416E90> ฉันจะพิมพ์ดาต้าเฟรมที่จัดกลุ่มได้อย่างไร ถ้าฉันทำ: print(df.groupby('A').head()) ฉันได้รับ …
134 python  pandas 

5
ทำให้ข้อมูลปกติในแพนด้า
สมมติว่าฉันมีกรอบข้อมูลแพนด้าdf: ฉันต้องการคำนวณค่าเฉลี่ยคอลัมน์ที่ชาญฉลาดของกรอบข้อมูล มันง่ายมาก: df.apply(average) จากนั้นคอลัมน์ที่ชาญฉลาดช่วงสูงสุด (col) - นาที (col) นี่เป็นเรื่องง่ายอีกครั้ง: df.apply(max) - df.apply(min) ตอนนี้สำหรับแต่ละองค์ประกอบฉันต้องการลบค่าเฉลี่ยของคอลัมน์และหารด้วยช่วงของคอลัมน์ ฉันไม่แน่ใจว่าจะทำอย่างไร ความช่วยเหลือ / คำแนะนำใด ๆ จะได้รับการชื่นชมมาก
133 python  pandas  numpy 

10
หมีแพนด้าแปลงดาต้าเฟรมเป็นอาร์เรย์ของทูเปิล
ฉันได้จัดการข้อมูลบางอย่างโดยใช้แพนด้าและตอนนี้ฉันต้องการบันทึกแบทช์กลับไปที่ฐานข้อมูล สิ่งนี้ต้องการให้ฉันแปลงดาต้าเฟรมเป็นอาร์เรย์ของทูเปิลโดยแต่ละทูเพิลจะสอดคล้องกับ "แถว" ของดาต้าเฟรม DataFrame ของฉันมีลักษณะดังนี้: In [182]: data_set Out[182]: index data_date data_1 data_2 0 14303 2012-02-17 24.75 25.03 1 12009 2012-02-16 25.00 25.07 2 11830 2012-02-15 24.99 25.15 3 6274 2012-02-14 24.68 25.05 4 2302 2012-02-13 24.62 24.77 5 14085 2012-02-10 24.38 24.61 ฉันต้องการแปลงเป็นอาร์เรย์ของสิ่งต่อไปนี้: [(datetime.date(2012,2,17),24.75,25.03), (datetime.date(2012,2,16),25.00,25.07), ...etc. ] ข้อเสนอแนะใด …
133 python  pandas 

4
Python pandas: เติมดาต้าเฟรมทีละแถว
งานง่ายๆในการเพิ่มแถวให้กับpandas.DataFrameวัตถุดูเหมือนจะทำได้ยาก มีคำถามเกี่ยวกับ stackoverflow 3 คำถามซึ่งไม่มีคำถามใดให้คำตอบที่ใช้ได้ นี่คือสิ่งที่ฉันพยายามทำ ฉันมี DataFrame ซึ่งฉันรู้จักรูปร่างตลอดจนชื่อของแถวและคอลัมน์แล้ว >>> df = pandas.DataFrame(columns=['a','b','c','d'], index=['x','y','z']) >>> df a b c d x NaN NaN NaN NaN y NaN NaN NaN NaN z NaN NaN NaN NaN ตอนนี้ฉันมีฟังก์ชั่นในการคำนวณค่าของแถวซ้ำ ๆ ฉันจะกรอกหนึ่งในแถวด้วยพจนานุกรมหรือ a pandas.Series? ความพยายามต่างๆที่ล้มเหลวมีดังนี้ >>> y = {'a':1, 'b':5, 'c':2, 'd':3} >>> df['y'] …
133 python  dataframe  row  pandas 

20
ฉันจะเข้ารหัสร้อนใน Python ได้อย่างไร
ฉันมีปัญหาการจัดหมวดหมู่แมชชีนเลิร์นนิงที่มีตัวแปรตามหมวดหมู่ 80% ฉันต้องใช้การเข้ารหัสแบบร้อนครั้งเดียวหรือไม่หากฉันต้องการใช้ลักษณนามสำหรับการจัดประเภท ฉันสามารถส่งข้อมูลไปยังลักษณนามโดยไม่ต้องเข้ารหัสได้หรือไม่ ฉันพยายามทำสิ่งต่อไปนี้เพื่อเลือกคุณสมบัติ: ฉันอ่านไฟล์รถไฟ: num_rows_to_read = 10000 train_small = pd.read_csv("../../dataset/train.csv", nrows=num_rows_to_read) ฉันเปลี่ยนประเภทของคุณสมบัติหมวดหมู่เป็น 'หมวดหมู่': non_categorial_features = ['orig_destination_distance', 'srch_adults_cnt', 'srch_children_cnt', 'srch_rm_cnt', 'cnt'] for categorical_feature in list(train_small.columns): if categorical_feature not in non_categorial_features: train_small[categorical_feature] = train_small[categorical_feature].astype('category') ฉันใช้การเข้ารหัสร้อนหนึ่งรายการ: train_small_with_dummies = pd.get_dummies(train_small, sparse=True) ปัญหาคือส่วนที่ 3 มักจะติดขัดแม้ว่าฉันจะใช้เครื่องแรง ดังนั้นหากไม่มีการเข้ารหัสที่ร้อนแรงฉันไม่สามารถทำการเลือกคุณสมบัติใด ๆ เพื่อกำหนดความสำคัญของคุณสมบัติได้ คุณแนะนำเมนูใด?

5
Pandas DataFrame: แทนที่ค่าทั้งหมดในคอลัมน์ตามเงื่อนไข
ฉันมี DataFrame ง่ายๆดังต่อไปนี้: ฉันต้องการเลือกค่าทั้งหมดจากคอลัมน์ 'ซีซั่นแรก' และแทนที่ค่าที่มากกว่า 1990 ด้วย 1 ในตัวอย่างนี้มีเพียงบัลติมอร์เรเวนเท่านั้นที่จะแทนที่ปี 1996 ด้วย 1 (ทำให้ข้อมูลที่เหลือยังคงอยู่) ฉันได้ใช้สิ่งต่อไปนี้: df.loc[(df['First Season'] > 1990)] = 1 แต่จะแทนที่ค่าทั้งหมดในแถวนั้นด้วย 1 ไม่ใช่แค่ค่าในคอลัมน์ "ซีซันแรก" ฉันจะแทนที่เฉพาะค่าจากคอลัมน์นั้นได้อย่างไร
132 python  pandas  dataframe 

2
ตรวจสอบว่าตัวแปรคือ dataframe หรือไม่
เมื่อฟังก์ชัน f ของฉันถูกเรียกด้วยตัวแปรฉันต้องการตรวจสอบว่า var เป็นดาต้าเฟรมแพนด้าหรือไม่: def f(var): if var == pd.DataFrame(): print "do stuff" ฉันเดาว่าวิธีแก้ปัญหาอาจค่อนข้างง่าย แต่ถึงแม้จะมี def f(var): if var.values != None: print "do stuff" ฉันไม่สามารถทำให้มันทำงานได้อย่างที่คาดไว้
131 python  pandas 

3
วิธีใดที่มีประสิทธิภาพที่สุดในการนับจำนวนเหตุการณ์ในหมีแพนด้า
ฉันมี dataframe df ขนาดใหญ่ (ประมาณ 12M แถว) พร้อมกับพูดว่า: df.columns = ['word','documents','frequency'] ดังนั้นสิ่งต่อไปนี้จึงดำเนินไปอย่างทันท่วงที: word_grouping = df[['word','frequency']].groupby('word') MaxFrequency_perWord = word_grouping[['frequency']].max().reset_index() MaxFrequency_perWord.columns = ['word','MaxFrequency'] อย่างไรก็ตามการดำเนินการนี้ใช้เวลานานโดยไม่คาดคิด: Occurrences_of_Words = word_grouping[['word']].count().reset_index() ฉันทำอะไรผิดที่นี่? มีวิธีที่ดีกว่าในการนับจำนวนเหตุการณ์ที่เกิดขึ้นในดาต้าเฟรมขนาดใหญ่หรือไม่? df.word.describe() ทำงานได้ดีดังนั้นฉันจึงไม่คาดว่าดาต้าเฟรมของ Occurrences_of_Words นี้จะใช้เวลาสร้างนานมาก ps: หากคำตอบชัดเจนและคุณรู้สึกว่าจำเป็นต้องลงโทษฉันที่ถามคำถามนี้โปรดใส่คำตอบด้วย ขอบคุณ.
131 python  pandas 

3
การรวมคอลัมน์เดียวกันหลายรายการโดยใช้ pandas GroupBy.agg ()
มีแพนด้าในตัวเพื่อใช้ฟังก์ชันการรวมที่แตกต่างกันสองฟังก์ชันf1, f2กับคอลัมน์เดียวกันdf["returns"]โดยไม่ต้องเรียกagg()หลายครั้งหรือไม่? ตัวอย่างดาต้าเฟรม: import pandas as pd import datetime as dt pd.np.random.seed(0) df = pd.DataFrame({ "date" : [dt.date(2012, x, 1) for x in range(1, 11)], "returns" : 0.05 * np.random.randn(10), "dummy" : np.repeat(1, 10) }) ผิดทางวากยสัมพันธ์ แต่ถูกต้องโดยสังหรณ์ใจวิธีที่จะทำคือ: # Assume `f1` and `f2` are defined for aggregating. df.groupby("dummy").agg({"returns": f1, "returns": f2}) …

8
ฉันจะพล็อต Pandas DataFrames ที่แยกเป็นพล็อตย่อยได้อย่างไร
ฉันมี Pandas DataFrames สองสามตัวที่ใช้มาตราส่วนค่าเดียวกัน แต่มีคอลัมน์และดัชนีต่างกัน เมื่อเรียกใช้df.plot()ฉันจะได้ภาพพล็อตแยกต่างหาก สิ่งที่ฉันต้องการจริงๆคือให้พวกเขาทั้งหมดอยู่ในพล็อตเรื่องเดียวกับเรื่องยิบย่อย แต่น่าเสียดายที่ฉันไม่สามารถหาวิธีแก้ปัญหาได้และจะขอขอบคุณเป็นอย่างสูงสำหรับความช่วยเหลือ

4
เชื่อมต่อรายการดาต้าเฟรมของแพนด้าเข้าด้วยกัน
ฉันมีรายการดาต้าเฟรมของ Pandas ที่อยากจะรวมไว้ในดาต้าเฟรมของ Pandas ฉันใช้ Python 2.7.10 และ Pandas 0.16.2 ฉันสร้างรายการดาต้าเฟรมจาก: import pandas as pd dfs = [] sqlall = "select * from mytable" for chunk in pd.read_sql_query(sqlall , cnxn, chunksize=10000): dfs.append(chunk) สิ่งนี้ส่งคืนรายการของดาต้าเฟรม type(dfs[0]) Out[6]: pandas.core.frame.DataFrame type(dfs) Out[7]: list len(dfs) Out[8]: 408 นี่คือข้อมูลตัวอย่างบางส่วน # sample dataframes d1 = pd.DataFrame({'one' : …

9
ลบส่วนที่ไม่ต้องการออกจากสตริงในคอลัมน์
ฉันกำลังมองหาวิธีที่มีประสิทธิภาพในการลบส่วนที่ไม่ต้องการออกจากสตริงในคอลัมน์ DataFrame ข้อมูลดูเหมือนว่า: time result 1 09:00 +52A 2 10:00 +62B 3 11:00 +44a 4 12:00 +30b 5 13:00 -110a ฉันต้องการตัดข้อมูลเหล่านี้เพื่อ: time result 1 09:00 52 2 10:00 62 3 11:00 44 4 12:00 30 5 13:00 110 ฉันพยายาม.str.lstrip('+-')และ. str.rstrip('aAbBcC')แต่มีข้อผิดพลาด: TypeError: wrapper() takes exactly 1 argument (2 given) คำแนะนำใด ๆ …

5
เพิ่มวันที่ที่ขาดหายไปในกรอบข้อมูลแพนด้า
ข้อมูลของฉันอาจมีหลายเหตุการณ์ในวันที่กำหนดหรือไม่มีเหตุการณ์ในวันที่ ฉันใช้เหตุการณ์เหล่านี้นับตามวันที่และวางแผนไว้ อย่างไรก็ตามเมื่อฉันวางโครงเรื่องทั้งสองซีรีส์ของฉันไม่ตรงกันเสมอไป idx = pd.date_range(df['simpleDate'].min(), df['simpleDate'].max()) s = df.groupby(['simpleDate']).size() ในโค้ดด้านบนidxจะกลายเป็นช่วงของ say 30 วัน 09-01-2013 ถึง 09-30-2013 อย่างไรก็ตามSอาจมีเวลาเพียง 25 หรือ 26 วันเนื่องจากไม่มีเหตุการณ์ใด ๆ เกิดขึ้นในวันที่กำหนด จากนั้นฉันจะได้รับ AssertionError เนื่องจากขนาดไม่ตรงกันเมื่อฉันพยายามพล็อต: fig, ax = plt.subplots() ax.bar(idx.to_pydatetime(), s, color='green') อะไรคือวิธีที่เหมาะสมในการจัดการกับปัญหานี้? ฉันต้องการลบวันที่ที่ไม่มีค่าออกจากIDXหรือ (ซึ่งฉันอยากจะทำ) คือเพิ่มวันที่ที่ขาดหายไปในชุดด้วยจำนวน 0 ฉันอยากจะมีกราฟเต็ม 30 วันที่มีค่า 0 หากแนวทางนี้ถูกต้องมีข้อเสนอแนะในการเริ่มต้นอย่างไร ฉันต้องการreindexฟังก์ชันไดนามิกบางประเภทหรือไม่? นี่คือตัวอย่างS ( df.groupby(['simpleDate']).size() ) โปรดสังเกตว่าไม่มีรายการสำหรับ …
129 python  date  plot  pandas  dataframe 

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