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

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

3
วิธีให้สีที่กำหนดเองของกราฟแท่งแพนด้า / matplotlib
ฉันเพิ่งเริ่มใช้ pandas / matplotlib แทน Excel เพื่อสร้างแผนภูมิแท่งแบบเรียงซ้อน ฉันพบปัญหา (1) มีเพียง 5 สีใน colormap เริ่มต้นดังนั้นหากฉันมีมากกว่า 5 หมวดหมู่สีจะซ้ำ ฉันจะระบุสีเพิ่มเติมได้อย่างไร? ตามหลักการแล้วการไล่ระดับสีที่มีสีเริ่มต้นและสีสิ้นสุดและวิธีการสร้าง n สีแบบไดนามิกระหว่าง? (2) สีไม่ถูกใจสายตา ฉันจะระบุชุดสีที่กำหนดเองได้อย่างไร? หรือการไล่ระดับสีก็ใช้ได้เช่นกัน ตัวอย่างที่แสดงทั้งสองประเด็นข้างต้นอยู่ด้านล่าง: 4 from matplotlib import pyplot 5 from pandas import * 6 import random 7 8 x = [{i:random.randint(1,5)} for i in range(10)] 9 df = …

3
คำนวณความแตกต่างของเวลา DataFrame ของ Pandas ระหว่างสองคอลัมน์ในชั่วโมงและนาที
ฉันมีสองคอลัมน์fromdateและtodateในดาต้าเฟรม import pandas as pd data = {'todate': [pd.Timestamp('2014-01-24 13:03:12.050000'), pd.Timestamp('2014-01-27 11:57:18.240000'), pd.Timestamp('2014-01-23 10:07:47.660000')], 'fromdate': [pd.Timestamp('2014-01-26 23:41:21.870000'), pd.Timestamp('2014-01-27 15:38:22.540000'), pd.Timestamp('2014-01-23 18:50:41.420000')]} df = pd.DataFrame(data) ฉันเพิ่มคอลัมน์ใหม่diffเพื่อค้นหาความแตกต่างระหว่างวันที่สองวันโดยใช้ df['diff'] = df['fromdate'] - df['todate'] ฉันได้รับdiffคอลัมน์ แต่มีdaysเมื่อมีมากกว่า 24 ชั่วโมง todate fromdate diff 0 2014-01-24 13:03:12.050 2014-01-26 23:41:21.870 2 days 10:38:09.820000 1 2014-01-27 11:57:18.240 2014-01-27 15:38:22.540 …

2
การกำหนดดัชนีใหม่ในออบเจ็กต์ Pandas DataFrame
ฉันกำลังพยายามจัดทำดัชนีDataFrameวัตถุแพนด้าอีกครั้งเช่นนี้ From: a b c 0 1 2 3 1 10 11 12 2 20 21 22 To : b c 1 2 3 10 11 12 20 21 22 ฉันกำลังพูดถึงเรื่องนี้ดังที่แสดงด้านล่างและได้รับคำตอบที่ผิด มีเบาะแสในการทำเช่นนี้หรือไม่? >>> col = ['a','b','c'] >>> data = DataFrame([[1,2,3],[10,11,12],[20,21,22]],columns=col) >>> data a b c 0 1 2 3 1 …

3
ข้อผิดพลาดแปลก ๆ ใน Pandas และ Numpy เกี่ยวกับมัลติเธรด
ฟังก์ชั่นส่วนใหญ่ของ Numpy จะเปิดใช้งานมัลติเธรดโดยค่าเริ่มต้น ตัวอย่างเช่นฉันทำงานบนเวิร์กสเตชัน intel 8-core intel ถ้าฉันเรียกใช้สคริปต์ import numpy as np x=np.random.random(1000000) for i in range(100000): np.sqrt(x) linux topจะแสดงการใช้งาน cpu 800% ในระหว่างการทำงาน ซึ่งหมายความว่า numpy ตรวจพบโดยอัตโนมัติว่าเวิร์กสเตชันของฉันมี 8 คอร์และnp.sqrtใช้ทั้ง 8 คอร์โดยอัตโนมัติเพื่อเร่งการคำนวณ อย่างไรก็ตามฉันพบข้อผิดพลาดแปลก ๆ ถ้าฉันเรียกใช้สคริปต์ import numpy as np import pandas as pd df=pd.DataFrame(np.random.random((10,10))) df+df x=np.random.random(1000000) for i in range(100000): np.sqrt(x) การใช้ …
25 python  pandas  numpy 

7
เพิ่มคอลัมน์ใหม่ไปยัง dataframe ตามพจนานุกรม
ฉันมีชื่อไฟล์และพจนานุกรม ฉันต้องการเพิ่มคอลัมน์ใหม่ไปยัง dataframe และคำนวณค่าตามพจนานุกรม การเรียนรู้ของเครื่องเพิ่มคุณสมบัติใหม่ตามตารางบางส่วน: score = {(1, 45, 1, 1) : 4, (0, 1, 2, 1) : 5} df = pd.DataFrame(data = { 'gender' : [1, 1, 0, 1, 1, 0, 0, 0, 1, 0], 'age' : [13, 45, 1, 45, 15, 16, 16, 16, 15, 15], 'cholesterol' : …

7
ตรวจสอบว่าคอลัมน์หมีแพนด้ามีองค์ประกอบทั้งหมดจากรายการ
ฉันมี df เช่นนี้: frame = pd.DataFrame({'a' : ['a,b,c', 'a,c,f', 'b,d,f','a,z,c']}) และรายการของรายการ: letters = ['a','c'] เป้าหมายของฉันคือการรับแถวทั้งหมดจากframeที่มีอย่างน้อย 2 องค์ประกอบในletters ฉันคิดวิธีแก้ปัญหานี้: for i in letters: subframe = frame[frame['a'].str.contains(i)] สิ่งนี้ให้สิ่งที่ฉันต้องการ แต่อาจไม่ใช่วิธีที่ดีที่สุดในแง่ของความยืดหยุ่น มีโซลูชัน 'vectorised' หรือไม่ ขอบคุณ
20 python  pandas 

5
ยกเลิกการนับและส่งคืนค่านับสำหรับแต่ละตัวแปรหรือไม่
ฉันมีกรอบข้อมูลที่บันทึกการตอบสนองการเลือกภาษาของคนจำนวน 19717 โปรแกรมผ่านคำถามแบบปรนัย แน่นอนว่าคอลัมน์แรกนั้นเป็นเพศของผู้ตอบขณะที่ส่วนที่เหลือเป็นตัวเลือกที่พวกเขาเลือก และด้วยเหตุนี้ถ้าฉันเลือก Python การตอบสนองของฉันจะถูกบันทึกในคอลัมน์ Python ไม่ใช่การทุบตีและในทางกลับกัน ID Gender Python Bash R JavaScript C++ 0 Male Python nan nan JavaScript nan 1 Female nan nan R JavaScript C++ 2 Prefer not to say Python Bash nan nan nan 3 Male nan nan nan nan nan สิ่งที่ฉันต้องการคือตารางที่ส่งคืนจำนวนอินสแตนซ์แต่ละหมวดหมู่ภายใต้Genderระเบียน ดังนั้นหากผู้ชาย 5,000 …


3
วิธีการแปลง dataframe แพนด้าเป็นพจนานุกรมลำดับชั้น
ฉันมี dataframe นุ่นต่อไปนี้: df1 = pd.DataFrame({'date': [200101,200101,200101,200101,200102,200102,200102,200102],'blockcount': [1,1,2,2,1,1,2,2],'reactiontime': [350,400,200,250,100,300,450,400]}) ฉันกำลังพยายามสร้างพจนานุกรมลำดับชั้นด้วยค่าของพจนานุกรมฝังตัวเป็นรายการซึ่งมีลักษณะดังนี้: {200101: {1:[350, 400], 2:[200, 250]}, 200102: {1:[100, 300], 2:[450, 400]}} ฉันจะทำสิ่งนี้ได้อย่างไร สิ่งที่ฉันได้รับใกล้เคียงที่สุดคือใช้รหัสนี้: df1.set_index('date').groupby(level='date').apply(lambda x: x.set_index('blockcount').squeeze().to_dict()).to_dict() ผลตอบแทนใด: {200101: {1: 400, 2: 250}, 200102: {1: 300, 2: 400}}
16 python  pandas 

4
การเปรียบเทียบรายการในสองคอลัมน์แถวอย่างชาญฉลาด
เมื่อมี Panda DataFrame เช่นนี้: import pandas as pd import numpy as np df = pd.DataFrame({'today': [['a', 'b', 'c'], ['a', 'b'], ['b']], 'yesterday': [['a', 'b'], ['a'], ['a']]}) today yesterday 0 ['a', 'b', 'c'] ['a', 'b'] 1 ['a', 'b'] ['a'] 2 ['b'] ['a'] ... etc แต่มีประมาณ 100,000 รายการฉันกำลังมองหาการเพิ่มและการลบของรายการเหล่านั้นในสองคอลัมน์ในแถวที่ชาญฉลาด มันเปรียบได้กับคำถามนี้: Pandas: วิธีเปรียบเทียบคอลัมน์ของรายการ Row-wise …

5
ป้องกันการบีบบังคับเฟรมข้อมูลแพนด้าขณะทำดัชนีและแทรกแถว
ฉันทำงานกับเฟรมข้อมูลแพนด้าแต่ละแถว แต่ฉันสะดุดปัญหาการบีบบังคับในขณะที่จัดทำดัชนีและแทรกแถว ดูเหมือนว่า Pandas ต้องการที่จะบีบบังคับจาก int / float แบบผสมให้กับทุกประเภททุ่นและฉันไม่เห็นการควบคุมที่ชัดเจนเกี่ยวกับพฤติกรรมนี้ ยกตัวอย่างเช่นที่นี่เป็นกรอบข้อมูลที่เรียบง่ายด้วยaเป็นintและbเป็นfloat: import pandas as pd pd.__version__ # '0.25.2' df = pd.DataFrame({'a': [1], 'b': [2.2]}) print(df) # a b # 0 1 2.2 print(df.dtypes) # a int64 # b float64 # dtype: object นี่คือปัญหาการบีบบังคับขณะสร้างดัชนีหนึ่งแถว: print(df.loc[0]) # a 1.0 # b 2.2 # …


3
รับระยะทางที่ใกล้ที่สุดกับ geodataframe สองตัวในนุ่น
นี่คือโครงสร้างทางภูมิศาสตร์ครั้งแรกของฉัน: !pip install geopandas import pandas as pd import geopandas city1 = [{'City':"Buenos Aires","Country":"Argentina","Latitude":-34.58,"Longitude":-58.66}, {'City':"Brasilia","Country":"Brazil","Latitude":-15.78 ,"Longitude":-70.66}, {'City':"Santiago","Country":"Chile ","Latitude":-33.45 ,"Longitude":-70.66 }] city2 = [{'City':"Bogota","Country":"Colombia ","Latitude":4.60 ,"Longitude":-74.08}, {'City':"Caracas","Country":"Venezuela","Latitude":10.48 ,"Longitude":-66.86}] city1df = pd.DataFrame(city1) city2df = pd.DataFrame(city2) gcity1df = geopandas.GeoDataFrame( city1df, geometry=geopandas.points_from_xy(city1df.Longitude, city1df.Latitude)) gcity2df = geopandas.GeoDataFrame( city2df, geometry=geopandas.points_from_xy(city2df.Longitude, city2df.Latitude)) City1 City Country Latitude Longitude …

4
คำนวณอัตราร้อยละของค่าที่คล้ายกันในดาต้าดาต้าแพนด้า
ฉันมีหนึ่งไฟล์ข้อมูลที่dfมีสองคอลัมน์: สคริปต์ (พร้อมข้อความ) และลำโพง Script Speaker aze Speaker 1 art Speaker 2 ghb Speaker 3 jka Speaker 1 tyc Speaker 1 avv Speaker 2 bhj Speaker 1 และฉันมีรายการต่อไปนี้: L = ['a','b','c'] ด้วยรหัสต่อไปนี้ df = (df.set_index('Speaker')['Script'].str.findall('|'.join(L)) .str.join('|') .str.get_dummies() .sum(level=0)) print (df) ฉันได้รับ dataframe นี้df2: Speaker a b c Speaker 1 2 …

2
อนุมานว่าคอลัมน์ใดเป็น datetime
ฉันมี dataframe datetime.datetimeขนาดใหญ่ที่มีหลายคอลัมน์หลายแห่งซึ่งเป็นประเภท ปัญหาคือหลายคนมีประเภทผสมรวมทั้งdatetime.datetimeค่าและค่าเช่นNone(และค่าที่ไม่ถูกต้องอื่น ๆ ): 0 2017-07-06 00:00:00 1 2018-02-27 21:30:05 2 2017-04-12 00:00:00 3 2017-05-21 22:05:00 4 2018-01-22 00:00:00 ... 352867 2019-10-04 00:00:00 352868 None 352869 some_string Name: colx, Length: 352872, dtype: object จึงส่งผลให้objectคอลัมน์ประเภท df.colx.fillna(pd.NaT)นี้สามารถแก้ไขได้ด้วย ปัญหาคือว่า dataframe ใหญ่เกินกว่าจะค้นหาแต่ละคอลัมน์ได้ อีกวิธีคือการใช้pd.to_datetime(col, errors='coerce')แต่วิธีนี้จะส่งไปยังdatetimeคอลัมน์จำนวนมากที่มีค่าตัวเลข ฉันสามารถทำได้df.fillna(float('nan'), inplace=True)แม้ว่าคอลัมน์ที่มีวันที่ยังคงเป็นobjectประเภทและจะยังคงมีปัญหาเดียวกัน สิ่งที่วิธีที่ฉันสามารถปฏิบัติตามเพื่อโยน datetime คอลัมน์เหล่านั้นมีค่าจริงๆมีdatetimeค่า แต่ยังอาจมีNoneและอาจบางค่าไม่ถูกต้อง (กล่าวขวัญตั้งแต่อื่นpd.to_datetimeในtry/ exceptข้อจะทำ)? …
14 python  pandas 

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