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

2
แปลงแพนด้า DataFrame เป็น GeoDataFrame
ดูเหมือนว่าเป็นคำถามที่ง่าย แต่ฉันไม่สามารถหาวิธีการแปลง DataFrame แพนด้าเป็น GeoDataFrame สำหรับการเข้าร่วมเชิงพื้นที่ นี่คือตัวอย่างของสิ่งที่มีลักษณะข้อมูลของฉันเช่นใช้df.head(): Date/Time Lat Lon ID 0 4/1/2014 0:11:00 40.7690 -73.9549 140 1 4/1/2014 0:17:00 40.7267 -74.0345 NaN อันที่จริงแล้ว dataframe นี้ถูกสร้างขึ้นจาก CSV ดังนั้นหากง่ายต่อการอ่าน CSV ในฐานะ GeoDataFrame โดยตรงซึ่งก็ใช้ได้เช่นกัน
42 csv  geopandas  pandas 

5
GeoPandas: ค้นหาจุดที่ใกล้ที่สุดในดาต้าเฟรมอื่น
ฉันมี 2 geodataframes: import geopandas as gpd from shapely.geometry import Point gpd1 = gpd.GeoDataFrame([['John',1,Point(1,1)],['Smith',1,Point(2,2)],['Soap',1,Point(0,2)]],columns=['Name','ID','geometry']) gpd2 = gpd.GeoDataFrame([['Work',Point(0,1.1)],['Shops',Point(2.5,2)],['Home',Point(1,1.1)]],columns=['Place','geometry']) และฉันต้องการค้นหาชื่อของจุดที่ใกล้ที่สุดใน gpd2 สำหรับแต่ละแถวใน gpd1: desired_output = Name ID geometry Nearest 0 John 1 POINT (1 1) Home 1 Smith 1 POINT (2 2) Shops 2 Soap 1 POINT (0 2) Work ฉันพยายามทำให้การทำงานนี้ใช้ฟังก์ชัน lambda: …

6
การอ่านข้อมูลดิบลงใน geopandas
เป็นไปได้ไหมที่จะอ่านข้อมูลดิบลงใน a geopandas GeoDataFrame, a la a pandas DataFrame? ตัวอย่างเช่นงานดังต่อไปนี้: import pandas as pd import requests data = requests.get("https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON") pd.read_json(io.BytesIO(r.content)) สิ่งต่อไปนี้ไม่: import geopandas as gpd import requests data = requests.get("https://data.cityofnewyork.us/api/geospatial/arq3-7z49?method=export&format=GeoJSON") gpd.read_file(io.BytesIO(r.content)) กล่าวอีกนัยหนึ่งเป็นไปได้ไหมที่จะอ่านข้อมูลเชิงพื้นที่ที่อยู่ในหน่วยความจำโดยไม่บันทึกข้อมูลนั้นลงดิสก์ก่อน

1
การนับคุณสมบัติเป็นจุดตัดของ Shapely Polygons
ฉันมีgeopandas GeoDataFrameที่ประกอบด้วยหุ่นเชิดPolygonและMultiPolygonรูปปั้นนับร้อย รูปหลายเหลี่ยมซ้อนกันในหลายสถานที่ ฉันต้องการสร้างรูปทรงเรขาคณิตใหม่ที่มีการนับจำนวนของพวกเขาทับซ้อนกัน บางสิ่งเช่นนี้ ใครบ้างมีความคิดสำหรับวิธีการวิธีการนี้ ฉันไม่สามารถเห็นทางเข้า ในที่สุดฉันต้องการน้ำหนักรูปหลายเหลี่ยมโดยเฉพาะอย่างยิ่งเพื่อให้รูปหลายเหลี่ยมบางส่วนอาจมีค่าเป็น 2 ด้วยตัวเอง การทำเช่นนี้กับshapelyเขตข้อมูล Z อาจจะดี นอกเหนือ: ฉันไม่ได้ผูกติดอยู่กับห้องสมุดใด ๆ เป็นพิเศษมันเป็นที่ที่ฉันไปจบแล้ว พิกัดในรูปทรงเรขาคณิตเหล่านี้คือพิกัดพิกเซลจริง ๆ แล้วฉันกำลังสะดุดเพื่อทำให้แรสเตอร์ซ้อนทับในรูปภาพอื่น ฉันต้องการทำให้รอยเท้าของฉันเล็กที่สุดเท่าที่จะเป็นไปได้เนื่องจากฉันต้องการที่จะสามารถปรับใช้สิ่งนี้กับเซิร์ฟเวอร์คลาวด์ ฯลฯ ซึ่งฉันอาจไม่สามารถติดตั้งสิ่งของแบบสุ่มได้

1
GeoPandas to_file () บันทึก GeoDataFrame โดยไม่ต้องมีระบบพิกัด
ฉันมี GeoPandas 0.2.1 py27_0 ฟิโอน่า 1.7.0 np110py27_1 Python 2.7.10 ติดตั้งในสภาพแวดล้อม Anaconda 2-4.1.1-Windows-x86 ฉันสามารถสร้างได้GeoDataFrameโดยการอ่านชุดข้อมูลอินพุตและใช้งานข้อมูล แต่การบันทึกชุดข้อมูลเอาต์พุตไม่รักษาระบบพิกัดไว้ import geopandas as gpd world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres')) world.to_file(driver='ESRI Shapefile',filename=r'C:\GIS\Temp\world_out.shp') สิ่งworld_out.shpนี้มีคุณลักษณะและสกีมาของซอร์สไฟล์รูปร่าง แต่ระบบพิกัดไม่ได้ถูกกำหนด ( <Unknown>) world_out.prjไฟล์ 0 KB และไม่ได้มีอะไร out = gpd.read_file(r'C:\GIS\Temp\world_out.shp') print out.crs >>> {} ฉันทดสอบเพื่อใช้งานโดยใช้ฟิโอน่าบริสุทธิ์และใช้งานได้ดีโดยรักษาcrsข้อมูลไว้: import fiona datasrc_path = r'C:\Program Files (x86)\ArcGIS\Desktop10.4\TemplateData\TemplateData.gdb' with fiona.drivers(): with fiona.open(datasrc_path,layer='cities') …

2
ทำ shapefile จากดาต้าดาต้าเฟรม
ฉันต้องการสร้าง shapefile จากเฟรมข้อมูล Pandas โดยใช้แถว lon & lat ฉันมีไฟล์ csv และฉันประมวลผลด้วยแพนด้าเพื่อทำเฟรมข้อมูลซึ่งง่ายต่อการจัดการ มันเป็นไปได้ไหมที่จะทำอย่างนั้นโดยไม่ต้องทำ loop loop ทีละบรรทัด

1
เปลี่ยนขนาดเครื่องหมายในพล็อตด้วย GeoPandas
ฉันมีรหัสทางภูมิศาสตร์กับคะแนนและข้อมูลที่เกี่ยวข้องบางส่วน ฉันต้องการลงจุดบนแผนที่โดยใช้ geopandas และมีขนาดของจุดที่สอดคล้องกับหนึ่งในคอลัมน์ใน geodataframe จนถึงตอนนี้ฉันมีรหัสต่อไปนี้: base = world.plot(color='white', figsize=(20,10)) geo_df.plot(ax=base, marker='.', color='red', markersize = geo_df['Pop_2005']) plt.xlim([-85, -60]) plt.ylim([-5, 12.5]); แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: TypeError: cannot convert the series to <class 'float'> ความคิดใด ๆ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.