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

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

4
วิธีที่ถูกต้องในการย้อนกลับ Panda.DataFrame?
นี่คือรหัสของฉัน: import pandas as pd data = pd.DataFrame({'Odd':[1,3,5,6,7,9], 'Even':[0,2,4,6,8,10]}) for i in reversed(data): print(data['Odd'], data['Even']) เมื่อฉันเรียกใช้รหัสนี้ฉันได้รับข้อผิดพลาดต่อไปนี้: Traceback (most recent call last): File "C:\Python33\lib\site-packages\pandas\core\generic.py", line 665, in _get_item_cache return cache[item] KeyError: 5 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\*****\Documents\******\********\****.py", line 5, in …
117 python  pandas  reverse 


9
พิมพ์สตริงที่ยาวมากในดาต้าเฟรมของแพนด้า
ฉันกำลังดิ้นรนกับสิ่งที่ดูเหมือนง่ายมากฉันมีกรอบข้อมูลแพนด้าที่มีสตริงที่ยาวมาก df = pd.DataFrame({'one' : ['one', 'two', 'This is very long string very long string very long string veryvery long string']}) ตอนนี้เมื่อฉันพยายามพิมพ์แบบเดียวกันฉันไม่เห็นสตริงทั้งหมดฉันค่อนข้างเห็นเพียงบางส่วนของสตริง ฉันลองทำตามตัวเลือกต่อไปนี้ โดยใช้ print(df.iloc[2]) โดยใช้ to_html โดยใช้ to_string หนึ่งในคำตอบ stackoverflow ที่แนะนำให้เพิ่มความกว้างของคอลัมน์โดยใช้ตัวเลือกการแสดงแพนด้าซึ่งก็ไม่ได้ผลเช่นกัน ฉันยังไม่ได้รับว่าset_printoptionsจะช่วยฉันได้อย่างไร ความคิดใด ๆ ที่ชื่นชม ดูธรรมดามาก แต่หาไม่ได้!
116 python  string  pandas  options 

9
Pandas DataFrame ไปยัง List of Lists
ง่ายต่อการเปลี่ยนรายชื่อเป็นกรอบข้อมูลแพนด้า: import pandas as pd df = pd.DataFrame([[1,2,3],[3,4,5]]) แต่ฉันจะเปลี่ยน df กลับเป็นลิสต์ได้อย่างไร lol = df.what_to_do_now? print lol # [[1,2,3],[3,4,5]]
116 python  pandas 

4
เมื่อใดที่ฉันควรใช้ pandas apply () ในรหัสของฉัน
applyฉันได้เห็นหลายคำตอบโพสต์คำถามในกองมากเกินเกี่ยวข้องกับการใช้วิธีแพนด้า ฉันยังเห็นผู้ใช้แสดงความคิดเห็นใต้พวกเขาโดยบอกว่า " applyช้าและควรหลีกเลี่ยง" ฉันได้อ่านบทความมากมายในหัวข้อประสิทธิภาพที่อธิบายว่าapplyช้า ฉันยังได้เห็นข้อจำกัดความรับผิดชอบในเอกสารว่าapplyเป็นเพียงฟังก์ชันอำนวยความสะดวกในการส่ง UDFs (ดูเหมือนจะไม่พบในตอนนี้) ดังนั้นฉันทามติทั่วไปคือapplyควรหลีกเลี่ยงถ้าเป็นไปได้ อย่างไรก็ตามสิ่งนี้ทำให้เกิดคำถามต่อไปนี้: ถ้าapplyแย่มากแล้วทำไมถึงอยู่ใน API? ฉันควรสร้างรหัสapplyฟรีอย่างไรและเมื่อใด เคยมีสถานการณ์ใด ๆ ที่applyเป็นสิ่งที่ดี (ดีกว่าการแก้ปัญหาที่เป็นไปได้อื่น ๆ )?

9
พริตตี้การพิมพ์ดาต้าเฟรมแพนด้า
ฉันจะพิมพ์ดาต้าเฟรมแพนด้าเป็นตารางข้อความที่ดีดังต่อไปนี้ได้อย่างไร +------------+---------+-------------+ | column_one | col_two | column_3 | +------------+---------+-------------+ | 0 | 0.0001 | ABCD | | 1 | 1e-005 | ABCD | | 2 | 1e-006 | long string | | 3 | 1e-007 | ABCD | +------------+---------+-------------+

6
จะอ่านไฟล์. xlsx โดยใช้ pandas Library ใน iPython ได้อย่างไร
ฉันต้องการอ่านไฟล์. xlsx โดยใช้ Pandas Library of python และพอร์ตข้อมูลไปยังตาราง postgreSQL สิ่งที่ฉันทำได้จนถึงตอนนี้คือ: import pandas as pd data = pd.ExcelFile("*File Name*") ตอนนี้ฉันรู้แล้วว่าขั้นตอนได้ดำเนินการสำเร็จแล้ว แต่ฉันอยากรู้ว่าฉันจะแยกวิเคราะห์ไฟล์ excel ที่อ่านแล้วได้อย่างไรเพื่อที่ฉันจะได้เข้าใจว่าข้อมูลใน excel แมปกับข้อมูลในข้อมูลตัวแปรได้อย่างไร ฉันเรียนรู้ว่าข้อมูลเป็นวัตถุ Dataframe ถ้าฉันไม่ผิด ดังนั้นฉันจะแยกวิเคราะห์วัตถุดาต้าเฟรมนี้เพื่อแยกแต่ละบรรทัดทีละแถวได้อย่างไร

8
การสร้างดาต้าเฟรมจากพจนานุกรมที่รายการมีความยาวต่างกัน
สมมติว่าฉันมีพจนานุกรมที่มีคู่คีย์ - ค่า 10 คู่ แต่ละรายการมีอาร์เรย์จำนวนนับ อย่างไรก็ตามความยาวของอาร์เรย์ไม่เท่ากันสำหรับทุกคน ฉันจะสร้างดาต้าเฟรมโดยที่แต่ละคอลัมน์มีรายการที่แตกต่างกันได้อย่างไร เมื่อฉันลอง: pd.DataFrame(my_dict) ฉันเข้าใจ: ValueError: arrays must all be the same length วิธีใดที่จะเอาชนะสิ่งนี้? ฉันมีความสุขที่จะให้ Pandas ใช้NaNรองคอลัมน์เหล่านั้นสำหรับรายการที่สั้นกว่านี้
114 python  pandas 

3
แพนด้าสามารถใช้คอลัมน์เป็นดัชนีได้หรือไม่?
ฉันมีสเปรดชีตดังนี้: Locality 2005 2006 2007 2008 2009 ABBOTSFORD 427000 448000 602500 600000 638500 ABERFELDIE 534000 600000 735000 710000 775000 AIREYS INLET459000 440000 430000 517500 512500 ฉันไม่ต้องการสลับคอลัมน์กับแถวด้วยตนเอง เป็นไปได้ไหมที่จะใช้ข้อมูลการอ่านแพนด้ากับรายการดังนี้: data['ABBOTSFORD']=[427000,448000,602500,600000,638500] data['ABERFELDIE']=[534000,600000,735000,710000,775000] data['AIREYS INLET']=[459000,440000,430000,517500,512500]
114 python  excel  pandas 

6
จัดรูปแบบแกน y เป็นเปอร์เซ็นต์
ฉันมีพล็อตเดิมที่สร้างขึ้นด้วยหมีแพนด้าเช่นนี้: df['myvar'].plot(kind='bar') แกน y จัดรูปแบบเป็นทศนิยมและฉันต้องการเปลี่ยนแกน y เป็นเปอร์เซ็นต์ โซลูชันทั้งหมดที่ฉันพบใช้ไวยากรณ์ ax.xyz และฉันสามารถวางโค้ดใต้บรรทัดด้านบนที่สร้างพล็อตได้เท่านั้น (ฉันไม่สามารถเพิ่ม ax = ax ในบรรทัดด้านบนได้) ฉันจะจัดรูปแบบแกน y เป็นเปอร์เซ็นต์โดยไม่ต้องเปลี่ยนบรรทัดด้านบนได้อย่างไร นี่คือวิธีแก้ปัญหาที่ฉันพบแต่ต้องการให้ฉันกำหนดพล็อตใหม่ : import matplotlib.pyplot as plt import numpy as np import matplotlib.ticker as mtick data = [8,12,15,17,18,18.5] perc = np.linspace(0,100,len(data)) fig = plt.figure(1, (7,4)) ax = fig.add_subplot(1,1,1) ax.plot(perc, data) fmt = '%.0f%%' …

4
ชุดค่าผสมที่ไม่ซ้ำกันในคอลัมน์ที่เลือกในกรอบข้อมูลแพนด้าและจำนวน
ฉันมีข้อมูลของฉันอยู่ในกรอบข้อมูลแพนด้าดังนี้: df1 = pd.DataFrame({'A':['yes','yes','yes','yes','no','no','yes','yes','yes','no'], 'B':['yes','no','no','no','yes','yes','no','yes','yes','no']}) ดังนั้นข้อมูลของฉันมีลักษณะเช่นนี้ ---------------------------- index A B 0 yes yes 1 yes no 2 yes no 3 yes no 4 no yes 5 no yes 6 yes no 7 yes yes 8 yes yes 9 no no ----------------------------- ฉันต้องการแปลงเป็นกรอบข้อมูลอื่น ผลลัพธ์ที่คาดหวังสามารถแสดงในสคริปต์ python ต่อไปนี้: output = pd.DataFrame({'A':['no','no','yes','yes'],'B':['no','yes','no','yes'],'count':[1,2,4,3]}) ผลลัพธ์ที่คาดหวังของฉันจะเป็นแบบนี้ -------------------------------------------- …
114 python  pandas 

6
การแปลงสตริงเพื่อลอยใน DataFrame
วิธีการปกปิดคอลัมน์ DataFrame ที่มีสตริงและNaNค่าที่จะลอย และมีคอลัมน์อื่นที่มีค่าเป็นสตริงและลอย วิธีแปลงคอลัมน์ทั้งหมดนี้ให้ลอย
113 python  pandas 

6
ทำแผนที่ความร้อนจาก DataFrame แพนด้า
ฉันมีดาต้าเฟรมที่สร้างจากแพ็คเกจ Pandas ของ Python ฉันจะสร้างแผนที่ความร้อนโดยใช้ DataFrame จากแพ็คเกจแพนด้าได้อย่างไร import numpy as np from pandas import * Index= ['aaa','bbb','ccc','ddd','eee'] Cols = ['A', 'B', 'C','D'] df = DataFrame(abs(np.random.randn(5, 4)), index= Index, columns=Cols) >>> df A B C D aaa 2.431645 1.248688 0.267648 0.613826 bbb 0.809296 1.671020 1.564420 0.347662 ccc 1.501939 1.126518 0.702019 1.596048 …

11
รวมคอลัมน์วันที่และเวลาโดยใช้ python pandas
ฉันมีดาต้าเฟรมแพนด้าที่มีคอลัมน์ต่อไปนี้ Date Time 01-06-2013 23:00:00 02-06-2013 01:00:00 02-06-2013 21:00:00 02-06-2013 22:00:00 02-06-2013 23:00:00 03-06-2013 01:00:00 03-06-2013 21:00:00 03-06-2013 22:00:00 03-06-2013 23:00:00 04-06-2013 01:00:00 ฉันจะรวมข้อมูล ['วันที่'] และข้อมูล ['เวลา'] เพื่อรับสิ่งต่อไปนี้ได้อย่างไร มีวิธีการทำโดยใช้pd.to_datetime? Date 01-06-2013 23:00:00 02-06-2013 01:00:00 02-06-2013 21:00:00 02-06-2013 22:00:00 02-06-2013 23:00:00 03-06-2013 01:00:00 03-06-2013 21:00:00 03-06-2013 22:00:00 03-06-2013 23:00:00 04-06-2013 01:00:00

4
แปลงเวลายูนิกซ์เป็นวันที่ที่อ่านได้ในดาต้าเฟรมของแพนด้า
ฉันมีดาต้าเฟรมที่มีเวลายูนิกซ์และราคาอยู่ในนั้น ฉันต้องการแปลงคอลัมน์ดัชนีเพื่อให้แสดงเป็นวันที่ที่มนุษย์อ่านได้ ดังนั้นสำหรับตัวอย่างเช่นผมมีdateเป็น1349633705ในคอลัมน์ดัชนี แต่ฉันต้องการให้แสดงเป็น10/07/2012(หรืออย่างน้อย10/07/2012 18:15) สำหรับบริบทบางอย่างนี่คือรหัสที่ฉันใช้งานและสิ่งที่ฉันได้ลองแล้ว: import json import urllib2 from datetime import datetime response = urllib2.urlopen('http://blockchain.info/charts/market-price?&format=json') data = json.load(response) df = DataFrame(data['values']) df.columns = ["date","price"] #convert dates df.date = df.date.apply(lambda d: datetime.strptime(d, "%Y-%m-%d")) df.index = df.date อย่างที่คุณเห็นฉันใช้ df.date = df.date.apply(lambda d: datetime.strptime(d, "%Y-%m-%d"))ที่นี่ซึ่งใช้ไม่ได้เนื่องจากฉันทำงานกับจำนวนเต็มไม่ใช่สตริง ฉันคิดว่าฉันต้องใช้datetime.date.fromtimestampแต่ฉันไม่ค่อยแน่ใจว่าจะใช้สิ่งนี้กับทั้งหมดdf.dateได้อย่างไร ขอบคุณ.

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