इस ट्यूटोरियल में, आप भू-स्थानिक डेटा के साथ काम करने के लिए लोकप्रिय दो पैकेजों से परिचित होंगे: geopandas और Shapely। फिर आप इन दोनों पैकेजों का उपयोग करके भू-स्थानिक डेटा को Python का उपयोग करते हुए पढ़ेंगे और 30 अगस्त से 18 सितंबर तक हरिकेन फ्लोरेंस के निशान का प्लॉट बनाएंगे।
भू-स्थानिक डेटा क्या है?
Spatial data, Geospatial data, GIS data या geodata, ये सभी ऐसे संख्यात्मक डेटा के नाम हैं जो किसी भौतिक वस्तु जैसे इमारत, सड़क, कस्बा, शहर, देश आदि के भौगोलिक स्थान की पहचान भौगोलिक निर्देशांक प्रणाली के अनुसार करते हैं। स्थानिक डेटा से आप न केवल लोकेशन, बल्कि किसी भी वस्तु की लंबाई, आकार, क्षेत्रफल या आकृति भी जान सकते हैं। स्थानिक डेटा के उदाहरण के तौर पर आपको वस्तु के निर्देशांक मिल सकते हैं, जैसे अक्षांश, देशांतर और ऊँचाई। Geographic Information Systems (GIS) या अन्य विशेष सॉफ्टवेयर एप्लिकेशन का उपयोग भू-स्थानिक डेटा तक पहुँचने, उसे देखने, संसाधित करने और विश्लेषित करने के लिए किया जा सकता है।
भू-स्थानिक डेटा क्यों?
भू-स्थानिक डेटा का हमारे दैनिक जीवन में बहुत व्यापक उपयोग है। एक उदाहरण वह Maps एप्लिकेशन है जिसका उपयोग आप एक स्थान से दूसरे स्थान तक नेविगेट करने के लिए करते हैं। दूसरा उदाहरण जिसे आप रोज़ देखते होंगे, वह मौसम चैनल है।
हाँ, भू-स्थानिक डेटा का उपयोग किसी वस्तु की स्थिति संबंधी जानकारी को उसके आसपास की अन्य चीज़ों के संदर्भ में दर्शाने के लिए किया जाता है: शहर के नक्शे पर आपका घर, विश्व मानचित्र पर हरिकेन, आदि। तो इस ट्यूटोरियल में, आप विध्वंसक हरिकेन फ्लोरेंस पर नज़र डालेंगे और उसके लोकेशन को ट्रैक करेंगे।
पैकेज आवश्यकताएँ
आगे न बढ़ें। यह एक महत्वपूर्ण भाग है। यदि आपको यकीन नहीं है कि आपने आवश्यकताएँ पूरी कर ली हैं, तो बस दोबारा जाँच लें। सबसे पहले, आपको नीचे दिए गए सभी पैकेज इंस्टॉल करने होंगे।
Pandas: डेटा स्ट्रक्चर और डेटा विश्लेषण टूल प्रदान करता है
Numpy: Python के साथ वैज्ञानिक कंप्यूटिंग के लिए एक मूलभूत पैकेज
SciPy: (उच्चारण “साइ पाई”) गणित, विज्ञान और इंजीनियरिंग के लिए Python-आधारित ओपन-सोर्स सॉफ्टवेयर का इकोसिस्टम
RTree: libspatialindex का ctypes Python रैपर जो उन्नत स्पैटियल इंडेक्सिंग सुविधाएँ प्रदान करता है
GDAL: रास्टर और वेक्टर भू-स्थानिक डेटा फ़ॉर्मैट के लिए ट्रांसलेटर लाइब्रेरी
Fiona: Fiona स्थानिक डेटा फ़ाइलें पढ़ता और लिखता है
Shapely: ज्यामितीय ऑब्जेक्ट्स, प्रेडिकेट्स, और ऑपरेशन्स
GeoPandas: pandas द्वारा उपयोग किए जाने वाले डेटा टाइप्स को विस्तारित करता है ताकि ज्यामितीय टाइप्स पर स्थानिक ऑपरेशन किए जा सकें।
PySAL: उच्च-स्तरीय एप्लिकेशन विकास को समर्थन देने हेतु Python में लिखे स्थानिक विश्लेषण फ़ंक्शनों की लाइब्रेरी।
Missingno: Python के लिए रिक्त डेटा का विज़ुअलाइज़ेशन मॉड्यूल
सब कुछ सही तरह से काम करे, यह सुनिश्चित करने के लिए ऊपर दिए क्रम में सभी पैकेज इंस्टॉल करें। कुछ पैकेज अन्य के लिए पूर्व-आवश्यक हैं, उदाहरण के लिए: GeoPandas को इंस्टॉल करने के लिए Shapely चाहिए, और Shapely इंस्टॉल करने के लिए RTree, GDAL, और Fiona पहले से इंस्टॉल होने चाहिए। किसी पैकेज को इंस्टॉल करने का सबसे आसान तरीका है: pip install PACKAGE_NAME
यदि आप Windows उपयोग कर रहे हैं और इस तरह पैकेज इंस्टॉल नहीं हो रहा, तो इस वेबसाइट को देखें, संबंधित पैकेज डाउनलोड करें और pip install PATH_TO_PACKAGE चलाएँ।
डेटा के बारे में
जैसा कि आप जानते हैं, भयावह हरिकेन फ्लोरेंस हाल ही में संयुक्त राज्य के पूर्वी तट के एक हिस्से से गुज़रा, जिससे अनुमानित 17 अरब USD का नुकसान हुआ। यह ट्यूटोरियल आपको यह पता लगाने में मदद करेगा कि यह कहाँ से आया, कब और कहाँ यह अधिक शक्तिशाली हुआ, और इस प्राकृतिक आपदा के बारे में अधिक समझ विकसित करते हुए इसे Python में विश्लेषित करेगा। इस हरिकेन के बारे में जानकारी देने वाली कई वेबसाइटें हैं। उदाहरण के लिए, इस वेबसाइट ने 1902 से 2018 तक अमेरिका में कई तूफानों और हरिकेनों के लिए डेटा प्रदान किया है, इसलिए आगे काम करने के लिए आपके पास ढेर सारा डेटा उपलब्ध है। इस ट्यूटोरियल के लिए, आप केवल हरिकेन फ्लोरेंस डेटा का उपयोग करेंगे।
आप इंटरनेट से अमेरिका के मानचित्र का भू-स्थानिक डेटा भी उपयोग करेंगे। Eric Celeste के ब्लॉग पोस्ट में अमेरिका की काउंटी और राज्यों के लिए सभी प्रकार की सीमा संबंधी डेटा फ़ाइलें हैं। इस ट्यूटोरियल में उपयोग किया गया डेटा US States, 5m, GeoJSON फ़ाइल है।
# Load all importance packagesimport geopandas
import numpy as np
import pandas as pd
from shapely.geometry import Point
import missingno as msn
import seaborn as sns
import matplotlib.pyplot as plt
% matplotlib inlineसंचालित द्वारा
सबसे पहले, आइए पहले भू-स्थानिक डाटाफ़्रेम पर नज़र डालते हैं: US States Geodata
# Getting to know GEOJSON file:
country = geopandas.read_file("data/gz_2010_us_040_00_5m.json")
country.head()संचालित द्वारा
अभी-अभी आपने जो डाटाफ़्रेम लोड किया है, उसका प्रकार जाँचते हुए आप देख सकते हैं कि यह Geo Data Frame है, जिसमें Pandas DataFrame की सभी सामान्य विशेषताएँ होती हैं।
GeoSeries की प्रत्येक वैल्यू एक Shapely ऑब्जेक्ट होती है। यह हो सकती है:
Point
Line
Polygon
MultiPolygon
प्रत्येक ऑब्जेक्ट का उपयोग अलग-अलग प्रकार की भौतिक वस्तु के लिए किया जा सकता है: जैसे इमारत के लिए Point, सड़क के लिए Line, शहर के लिए Polygon, और कई शहरों वाले देश के लिए MultiPolygon। प्रत्येक ज्यामितीय ऑब्जेक्ट के बारे में अधिक जानकारी के लिए यह लेख पढ़ें: https://shapely.readthedocs.io/en/stable/manual.html#geometric-objects
<matplotlib.axes._subplots.AxesSubplot at 0x1cfe68c1358>संचालित द्वारा
जैसा कि आप देख सकते हैं, US का मानचित्र फ़्रेम की तुलना में अपेक्षाकृत छोटा है। इसका कारण यह है कि जानकारी में अलास्का, हवाई और प्यूर्टो रिको शामिल हैं, जो बिखरे हुए हैं। इस ट्यूटोरियल के उद्देश्य से, आप अलास्का और हवाई को बाहर कर सकते हैं क्योंकि हरिकेन उन दोनों राज्यों के पास नहीं गया था। आप अपने प्लॉट को कस्टमाइज़ करने के लिए फ़िगर साइज और रंग भी जोड़ सकते हैं:
# Exclude Alaska and Hawaii for now
country[country['NAME'].isin(['Alaska','Hawaii'])==False].plot(figsize=(30,20), color='#3B3C6E');संचालित द्वारा
ज़्यादा मुश्किल नहीं, है न! अब जब आपके पास US का मानचित्र है, तो आइए हरिकेन डेटा लोड करते हैं:
florence = pd.read_csv('data/florence.csv')
florence.head()संचालित द्वारा
खोजपूर्ण डेटा विश्लेषण
जब भी आप कोई डेटासेट लोड करते हैं, यह हमेशा पहला कदम होता है:
<class'pandas.core.frame.DataFrame'>RangeIndex:105 entries,0 to 104
Data columns(total 11 columns):
AdvisoryNumber 105 non-null object
Date 105 non-null object
Lat 105 non-null float64
Long 105 non-null float64
Wind 105 non-null int64
Pres 105 non-null int64
Movement 105 non-null object
Type 105 non-null object
Name 105 non-null object
Received 105 non-null object
Forecaster 104 non-null object
dtypes:float64(2),int64(2),object(7)
memory usage:9.1+KBसंचालित द्वारा
missingno पैकेज का उपयोग करके मिसिंग वैल्यू जाँचना। यह एक उपयोगी पैकेज है जो विज़ुअलाइज़ेशन के माध्यम से मिसिंग डेटा दिखाता है। जैसा कि आप नीचे देख सकते हैं, "Forecaster" कॉलम में केवल एक मिसिंग वैल्यू है, जिसकी आपको इस ट्यूटोरियल में आवश्यकता नहीं है। इसलिए फिलहाल आप इसे नज़रअंदाज़ कर सकते हैं।
# Notice you can always adjust the color of the visualization
msn.bar(florence, color='darkolivegreen');संचालित द्वारा
कुछ सांख्यिकीय जानकारी देखें; कुछ बहुत उपयोगी हो सकती हैं, जैसे औसत पवन गति, इस हरिकेन की अधिकतम और न्यूनतम पवन गति, आदि।
# Statistical information
florence.describe()संचालित द्वारा
Lat
Long
Wind
Pres
count
105.000000
105.000000
105.000000
105.000000
mean
25.931429
56.938095
74.428571
981.571429
std
7.975917
20.878865
36.560765
22.780667
min
12.900000
18.400000
25.000000
939.000000
25%
18.900000
41.000000
40.000000
956.000000
50%
25.100000
60.000000
70.000000
989.000000
75%
33.600000
76.400000
105.000000
1002.000000
max
42.600000
82.900000
140.000000
1008.000000
अधिकांश डेटा के लिए, आपको सफ़ाई करनी होगी और केवल वही लेना होगा जिसकी आपको ज़रूरत है। यहाँ, आपको केवल समय, निर्देशांक: अक्षांश और देशांतर, पवन गति, दाब, और नाम चाहिए। Movement और Type वैकल्पिक हैं, लेकिन बाकी को हटाया जा सकता है।
# dropping all unused features:
florence = florence.drop(['AdvisoryNumber','Forecaster','Received'], axis=1)
florence.head()संचालित द्वारा
आम तौर पर, यदि आप केवल डेटा को ही प्लॉट करते हैं, तो निर्देशांकों के लिए अतिरिक्त सावधानी की आवश्यकता नहीं होती। हालांकि, यदि आप चाहते हैं कि यह मानचित्र पर जैसा दिखता है वैसा दिखे, तो देशांतर और अक्षांश की जाँच करना महत्वपूर्ण है। यहाँ देशांतर पश्चिम में है, आपको डेटा को सही ढंग से प्लॉट करने के लिए संख्या के आगे "-" जोड़ना होगा:
# Add "-" in front of the number to correctly plot the data:
florence['Long']=0- florence['Long']
florence.head()संचालित द्वारा
फिर आप अक्षांश और देशांतर को मिलाकर हरिकेन के निर्देशांक बना सकते हैं, जिन्हें बाद में विज़ुअलाइज़ेशन के लिए GeoPoint में बदला जाएगा।
# Combining Lattitude and Longitude to create hurricane coordinates:
florence['coordinates']= florence[['Long','Lat']].values.tolist()
florence.head()संचालित द्वारा
# Change the coordinates to a geoPoint
florence['coordinates']= florence['coordinates'].apply(Point)
florence.head()संचालित द्वारा
florence डाटाफ़्रेम और florence डेटा के coordinates कॉलम के प्रकार की जाँच। ये pandas DataFrame और pandas Series हैं।
डेटा को भू-स्थानिक डेटा में बदलने के बाद, हम florence डाटाफ़्रेम और Florence डेटा के coordinates कॉलम के प्रकार को फिर से जाँचेंगे। अब ये Geo DataFrame और GeoSeries हैं।
# Convert the count df to geodf
florence = geopandas.GeoDataFrame(florence, geometry='coordinates')
florence.head()संचालित द्वारा
ध्यान दें कि भले ही अब यह Geo DataFrame और Geo Series है, फिर भी यह एक सामान्य DataFrame और Series की तरह ही व्यवहार करता है। यानी आप अब भी डाटाफ़्रेम पर फ़िल्टरिंग, groupby कर सकते हैं या कॉलम के न्यूनतम, अधिकतम, या औसत मान निकाल सकते हैं।
# Filtering from before the hurricane was named.
florence[florence['Name']=='Six']संचालित द्वारा
# Groupping by name to see how many names it has in the data set:
florence.groupby('Name').Type.count()संचालित द्वारा
Name
FLORENCE6
Florence 85SIX4
Six 10Name: Type,dtype: int64
संचालित द्वारा
हरिकेन फ्लोरेंस की औसत पवन गति निकालना:
print("Mean wind speed of Hurricane Florence is {} mph and it can go up to {} mph maximum".format(round(florence.Wind.mean(),4),
florence.Wind.max()))संचालित द्वारा
Mean wind speed of Hurricane Florence is 74.4286 mph and it can go up to 140 mph maximum
संचालित द्वारा
तो हरिकेन फ्लोरेंस की औसत पवन गति 74.43 मील प्रति घंटा (119.78 किमी प्रति घंटा) है और अधिकतम 140 मील प्रति घंटा (225.308 किमी प्रति घंटा) है। यह पवन गति कितनी भयावह हो सकती है, इसे समझने के लिए, U.K Royal Navy द्वारा विकसित Beaufort Wind Scale पानी और भूमि पर हवा के प्रभाव का रूप दिखाती है। 48 से 55 मील प्रति घंटा की गति पर भी, यह पेड़ों को तोड़ और उखाड़ सकती है, और "काफी संरचनात्मक क्षति" पहुँचा सकती है।
आप उस समय वहाँ होना नहीं चाहेंगे।
विज़ुअलाइज़ेशन
pandas DataFrame की तरह, GeoDataFrame में भी .plot एट्रिब्यूट होता है। हालाँकि, यह एट्रिब्यूट GeoDataFrame के भीतर मौजूद निर्देशांकों का उपयोग करके मानचित्रण करता है। आइए देखें:
क्या हुआ? आपको बिना किसी नेविगेशन के बस बिंदुओं का एक समूह दिखाई दे रहा है। क्या कुछ गलत है? नहीं, सब ठीक है। क्योंकि इस डाटाफ़्रेम में हर समय-बिंदु पर हरिकेन फ्लोरेंस की केवल निर्देशांक (लोकेशन) जानकारी है, इसलिए हम केवल खाली मानचित्र पर स्थिति ही प्लॉट कर सकते हैं।
तो, अगला कदम US मानचित्र पर हरिकेन की स्थिति को प्लॉट करना है ताकि देखें कि यह कहाँ टकराया और उस समय इसकी ताकत कितनी थी। ऐसा करने के लिए, आप US मानचित्र के निर्देशांकों (शुरुआत में लोड किया गया डेटा) को बेस के रूप में उपयोग करेंगे और उसके ऊपर हरिकेन फ्लोरेंस की स्थिति प्लॉट करेंगे।
# Plotting to see the hurricane overlay the US map:
fig, ax = plt.subplots(1, figsize=(30,20))
base = country[country['NAME'].isin(['Alaska','Hawaii'])==False].plot(ax=ax, color='#3B3C6E')# plotting the hurricane position on top with red color to stand out:
florence.plot(ax=base, color='darkred', marker="*", markersize=10);संचालित द्वारा
बहुत बढ़िया दिख रहा है! अब, हम इसे कुछ और विवरणों के साथ पूरा करेंगे, जैसे:
शीर्षक जोड़ना
हरिकेन की स्थिति को पवन गति के आधार पर रंगना ताकि देखें कि जब यह प्रत्येक शहर से गुज़रा, तब यह कितना शक्तिशाली था।
एक्सिस हटाना
लीजेंड जोड़ना
परिणाम को आगे उपयोग के लिए इमेज फ़ाइल में सहेजना
fig, ax = plt.subplots(1, figsize=(20,20))
base = country[country['NAME'].isin(['Alaska','Hawaii'])==False].plot(ax=ax, color='#3B3C6E')
florence.plot(ax=base, column='Wind', marker="<", markersize=10, cmap='cool', label="Wind speed(mph)")
_ = ax.axis('off')
plt.legend()
ax.set_title("Hurricane Florence in US Map", fontsize=25)
plt.savefig('Hurricane_footage.png',bbox_inches='tight');संचालित द्वारा
तो हरिकेन अपनी अधिकतम ताकत तब पर था जब वह पूर्वी तट के पास अपतटीय क्षेत्र में था। जैसे-जैसे वह भूमि के करीब आया, उसकी ताकत कम होने लगी, लेकिन 60 से 77 मील प्रति घंटा की पवन गति की सीमा में भी, यह भयंकर नुकसान पहुँचा सकता है।
निष्कर्ष
शानदार काम! आपने Python में भू-स्थानिक डेटा के साथ काम करने के कुछ ज़रूरी चरण सीख लिए हैं। आपने यह भी सीखा कि भू-स्थानिक डेटा को कैसे प्लॉट किया जाए और किसी कहानी को दिखाने के लिए प्लॉट्स के आकार, रंग और ओवरले को कैसे कस्टमाइज़ किया जाए। यदि आप अपने कौशल का अभ्यास करना चाहते हैं, तो आज़माने के लिए ऑनलाइन ढेर सारा भू-स्थानिक डेटा उपलब्ध है। एक उदाहरण ऊपर दिया गया मौसम संबंधी वेबसाइट है।
यदि आप मुझसे संपर्क करना चाहें, तो आप मुझे [email protected] पर ईमेल भेज सकते हैं या LinkedIn के माध्यम से जुड़ सकते हैं। सीखने का आनंद लें और सुरक्षित रहें!
Python के साथ डेटा विश्लेषण की बुनियादी बातें सिर्फ चार घंटे में सीखें। यह ऑनलाइन पाठ्यक्रम Python इंटरफ़ेस का परिचय देगा और लोकप्रिय पैकेजों का अन्वेषण करेगा।
इस ट्यूटोरियल में, आप भू-स्थानिक डेटा के साथ काम करने के लिए लोकप्रिय दो पैकेजों से परिचित होंगे: geopandas और Shapely। फिर आप इन दोनों पैकेजों का उपयोग करके भू-स्थानिक डेटा को Python का उपयोग करते हुए पढ़ेंगे और 30 अगस्त से 18 सितंबर तक हरिकेन फ्लोरेंस के निशान का प्लॉट बनाएंगे।
भू-स्थानिक डेटा क्या है?
Spatial data, Geospatial data, GIS data या geodata, ये सभी ऐसे संख्यात्मक डेटा के नाम हैं जो किसी भौतिक वस्तु जैसे इमारत, सड़क, कस्बा, शहर, देश आदि के भौगोलिक स्थान की पहचान भौगोलिक निर्देशांक प्रणाली के अनुसार करते हैं। स्थानिक डेटा से आप न केवल लोकेशन, बल्कि किसी भी वस्तु की लंबाई, आकार, क्षेत्रफल या आकृति भी जान सकते हैं। स्थानिक डेटा के उदाहरण के तौर पर आपको वस्तु के निर्देशांक मिल सकते हैं, जैसे अक्षांश, देशांतर और ऊँचाई। Geographic Information Systems (GIS) या अन्य विशेष सॉफ्टवेयर एप्लिकेशन का उपयोग भू-स्थानिक डेटा तक पहुँचने, उसे देखने, संसाधित करने और विश्लेषित करने के लिए किया जा सकता है।
भू-स्थानिक डेटा क्यों?
भू-स्थानिक डेटा का हमारे दैनिक जीवन में बहुत व्यापक उपयोग है। एक उदाहरण वह Maps एप्लिकेशन है जिसका उपयोग आप एक स्थान से दूसरे स्थान तक नेविगेट करने के लिए करते हैं। दूसरा उदाहरण जिसे आप रोज़ देखते होंगे, वह मौसम चैनल है।
हाँ, भू-स्थानिक डेटा का उपयोग किसी वस्तु की स्थिति संबंधी जानकारी को उसके आसपास की अन्य चीज़ों के संदर्भ में दर्शाने के लिए किया जाता है: शहर के नक्शे पर आपका घर, विश्व मानचित्र पर हरिकेन, आदि। तो इस ट्यूटोरियल में, आप विध्वंसक हरिकेन फ्लोरेंस पर नज़र डालेंगे और उसके लोकेशन को ट्रैक करेंगे।
पैकेज आवश्यकताएँ
आगे न बढ़ें। यह एक महत्वपूर्ण भाग है। यदि आपको यकीन नहीं है कि आपने आवश्यकताएँ पूरी कर ली हैं, तो बस दोबारा जाँच लें। सबसे पहले, आपको नीचे दिए गए सभी पैकेज इंस्टॉल करने होंगे।
सब कुछ सही तरह से काम करे, यह सुनिश्चित करने के लिए ऊपर दिए क्रम में सभी पैकेज इंस्टॉल करें। कुछ पैकेज अन्य के लिए पूर्व-आवश्यक हैं, उदाहरण के लिए:
GeoPandasको इंस्टॉल करने के लिएShapelyचाहिए, औरShapelyइंस्टॉल करने के लिएRTree,GDAL, औरFionaपहले से इंस्टॉल होने चाहिए। किसी पैकेज को इंस्टॉल करने का सबसे आसान तरीका है:pip install PACKAGE_NAMEयदि आप Windows उपयोग कर रहे हैं और इस तरह पैकेज इंस्टॉल नहीं हो रहा, तो इस वेबसाइट को देखें, संबंधित पैकेज डाउनलोड करें और
pip install PATH_TO_PACKAGEचलाएँ।डेटा के बारे में
जैसा कि आप जानते हैं, भयावह हरिकेन फ्लोरेंस हाल ही में संयुक्त राज्य के पूर्वी तट के एक हिस्से से गुज़रा, जिससे अनुमानित 17 अरब USD का नुकसान हुआ। यह ट्यूटोरियल आपको यह पता लगाने में मदद करेगा कि यह कहाँ से आया, कब और कहाँ यह अधिक शक्तिशाली हुआ, और इस प्राकृतिक आपदा के बारे में अधिक समझ विकसित करते हुए इसे Python में विश्लेषित करेगा। इस हरिकेन के बारे में जानकारी देने वाली कई वेबसाइटें हैं। उदाहरण के लिए, इस वेबसाइट ने 1902 से 2018 तक अमेरिका में कई तूफानों और हरिकेनों के लिए डेटा प्रदान किया है, इसलिए आगे काम करने के लिए आपके पास ढेर सारा डेटा उपलब्ध है। इस ट्यूटोरियल के लिए, आप केवल हरिकेन फ्लोरेंस डेटा का उपयोग करेंगे।
आप इंटरनेट से अमेरिका के मानचित्र का भू-स्थानिक डेटा भी उपयोग करेंगे। Eric Celeste के ब्लॉग पोस्ट में अमेरिका की काउंटी और राज्यों के लिए सभी प्रकार की सीमा संबंधी डेटा फ़ाइलें हैं। इस ट्यूटोरियल में उपयोग किया गया डेटा US States, 5m, GeoJSON फ़ाइल है।
सबसे पहले, आइए पहले भू-स्थानिक डाटाफ़्रेम पर नज़र डालते हैं: US States Geodata
अभी-अभी आपने जो डाटाफ़्रेम लोड किया है, उसका प्रकार जाँचते हुए आप देख सकते हैं कि यह Geo Data Frame है, जिसमें Pandas DataFrame की सभी सामान्य विशेषताएँ होती हैं।
निर्देशांक रखने वाले कॉलम के डेटा टाइप की जाँच: यह GeoSeries है।
GeoSeries की प्रत्येक वैल्यू एक Shapely ऑब्जेक्ट होती है। यह हो सकती है:
प्रत्येक ऑब्जेक्ट का उपयोग अलग-अलग प्रकार की भौतिक वस्तु के लिए किया जा सकता है: जैसे इमारत के लिए Point, सड़क के लिए Line, शहर के लिए Polygon, और कई शहरों वाले देश के लिए MultiPolygon। प्रत्येक ज्यामितीय ऑब्जेक्ट के बारे में अधिक जानकारी के लिए यह लेख पढ़ें: https://shapely.readthedocs.io/en/stable/manual.html#geometric-objects
Pandas DataFrame की तरह, GeoDataFrame में भी plot एट्रिब्यूट होता है, जो डाटाफ़्रेम के भीतर मौजूद geometry का उपयोग करके मानचित्र प्लॉट करता है:
जैसा कि आप देख सकते हैं, US का मानचित्र फ़्रेम की तुलना में अपेक्षाकृत छोटा है। इसका कारण यह है कि जानकारी में अलास्का, हवाई और प्यूर्टो रिको शामिल हैं, जो बिखरे हुए हैं। इस ट्यूटोरियल के उद्देश्य से, आप अलास्का और हवाई को बाहर कर सकते हैं क्योंकि हरिकेन उन दोनों राज्यों के पास नहीं गया था। आप अपने प्लॉट को कस्टमाइज़ करने के लिए फ़िगर साइज और रंग भी जोड़ सकते हैं:
ज़्यादा मुश्किल नहीं, है न! अब जब आपके पास US का मानचित्र है, तो आइए हरिकेन डेटा लोड करते हैं:
खोजपूर्ण डेटा विश्लेषण
जब भी आप कोई डेटासेट लोड करते हैं, यह हमेशा पहला कदम होता है:
missingno पैकेज का उपयोग करके मिसिंग वैल्यू जाँचना। यह एक उपयोगी पैकेज है जो विज़ुअलाइज़ेशन के माध्यम से मिसिंग डेटा दिखाता है। जैसा कि आप नीचे देख सकते हैं, "Forecaster" कॉलम में केवल एक मिसिंग वैल्यू है, जिसकी आपको इस ट्यूटोरियल में आवश्यकता नहीं है। इसलिए फिलहाल आप इसे नज़रअंदाज़ कर सकते हैं।
कुछ सांख्यिकीय जानकारी देखें; कुछ बहुत उपयोगी हो सकती हैं, जैसे औसत पवन गति, इस हरिकेन की अधिकतम और न्यूनतम पवन गति, आदि।
अधिकांश डेटा के लिए, आपको सफ़ाई करनी होगी और केवल वही लेना होगा जिसकी आपको ज़रूरत है। यहाँ, आपको केवल समय, निर्देशांक: अक्षांश और देशांतर, पवन गति, दाब, और नाम चाहिए। Movement और Type वैकल्पिक हैं, लेकिन बाकी को हटाया जा सकता है।
आम तौर पर, यदि आप केवल डेटा को ही प्लॉट करते हैं, तो निर्देशांकों के लिए अतिरिक्त सावधानी की आवश्यकता नहीं होती। हालांकि, यदि आप चाहते हैं कि यह मानचित्र पर जैसा दिखता है वैसा दिखे, तो देशांतर और अक्षांश की जाँच करना महत्वपूर्ण है। यहाँ देशांतर पश्चिम में है, आपको डेटा को सही ढंग से प्लॉट करने के लिए संख्या के आगे "-" जोड़ना होगा:
फिर आप अक्षांश और देशांतर को मिलाकर हरिकेन के निर्देशांक बना सकते हैं, जिन्हें बाद में विज़ुअलाइज़ेशन के लिए GeoPoint में बदला जाएगा।
florenceडाटाफ़्रेम औरflorenceडेटा केcoordinatesकॉलम के प्रकार की जाँच। ये pandas DataFrame और pandas Series हैं।डेटा को भू-स्थानिक डेटा में बदलने के बाद, हम
florenceडाटाफ़्रेम और Florence डेटा केcoordinatesकॉलम के प्रकार को फिर से जाँचेंगे। अब ये Geo DataFrame और GeoSeries हैं।ध्यान दें कि भले ही अब यह Geo DataFrame और Geo Series है, फिर भी यह एक सामान्य DataFrame और Series की तरह ही व्यवहार करता है। यानी आप अब भी डाटाफ़्रेम पर फ़िल्टरिंग, groupby कर सकते हैं या कॉलम के न्यूनतम, अधिकतम, या औसत मान निकाल सकते हैं।
हरिकेन फ्लोरेंस की औसत पवन गति निकालना:
तो हरिकेन फ्लोरेंस की औसत पवन गति 74.43 मील प्रति घंटा (119.78 किमी प्रति घंटा) है और अधिकतम 140 मील प्रति घंटा (225.308 किमी प्रति घंटा) है। यह पवन गति कितनी भयावह हो सकती है, इसे समझने के लिए, U.K Royal Navy द्वारा विकसित Beaufort Wind Scale पानी और भूमि पर हवा के प्रभाव का रूप दिखाती है। 48 से 55 मील प्रति घंटा की गति पर भी, यह पेड़ों को तोड़ और उखाड़ सकती है, और "काफी संरचनात्मक क्षति" पहुँचा सकती है।
आप उस समय वहाँ होना नहीं चाहेंगे।
विज़ुअलाइज़ेशन
pandas DataFrame की तरह, GeoDataFrame में भी
.plotएट्रिब्यूट होता है। हालाँकि, यह एट्रिब्यूट GeoDataFrame के भीतर मौजूद निर्देशांकों का उपयोग करके मानचित्रण करता है। आइए देखें:क्या हुआ? आपको बिना किसी नेविगेशन के बस बिंदुओं का एक समूह दिखाई दे रहा है। क्या कुछ गलत है?
नहीं, सब ठीक है। क्योंकि इस डाटाफ़्रेम में हर समय-बिंदु पर हरिकेन फ्लोरेंस की केवल निर्देशांक (लोकेशन) जानकारी है, इसलिए हम केवल खाली मानचित्र पर स्थिति ही प्लॉट कर सकते हैं।
तो, अगला कदम US मानचित्र पर हरिकेन की स्थिति को प्लॉट करना है ताकि देखें कि यह कहाँ टकराया और उस समय इसकी ताकत कितनी थी। ऐसा करने के लिए, आप US मानचित्र के निर्देशांकों (शुरुआत में लोड किया गया डेटा) को बेस के रूप में उपयोग करेंगे और उसके ऊपर हरिकेन फ्लोरेंस की स्थिति प्लॉट करेंगे।
बहुत बढ़िया दिख रहा है! अब, हम इसे कुछ और विवरणों के साथ पूरा करेंगे, जैसे:
तो हरिकेन अपनी अधिकतम ताकत तब पर था जब वह पूर्वी तट के पास अपतटीय क्षेत्र में था। जैसे-जैसे वह भूमि के करीब आया, उसकी ताकत कम होने लगी, लेकिन 60 से 77 मील प्रति घंटा की पवन गति की सीमा में भी, यह भयंकर नुकसान पहुँचा सकता है।
निष्कर्ष
शानदार काम! आपने Python में भू-स्थानिक डेटा के साथ काम करने के कुछ ज़रूरी चरण सीख लिए हैं। आपने यह भी सीखा कि भू-स्थानिक डेटा को कैसे प्लॉट किया जाए और किसी कहानी को दिखाने के लिए प्लॉट्स के आकार, रंग और ओवरले को कैसे कस्टमाइज़ किया जाए। यदि आप अपने कौशल का अभ्यास करना चाहते हैं, तो आज़माने के लिए ऑनलाइन ढेर सारा भू-स्थानिक डेटा उपलब्ध है। एक उदाहरण ऊपर दिया गया मौसम संबंधी वेबसाइट है।
स्रोतों के लिए, कृपया इस पुस्तक पर नज़र डालें: Karim Bahgat (2015) द्वारा “Python Geospatial Development Essentials” गहन मार्गदर्शन के लिए।
यदि आप मुझसे संपर्क करना चाहें, तो आप मुझे [email protected] पर ईमेल भेज सकते हैं या LinkedIn के माध्यम से जुड़ सकते हैं। सीखने का आनंद लें और सुरक्षित रहें!
यदि आप Python में भू-स्थानिक डेटा के बारे में और सीखना चाहते हैं, तो DataCamp का Visualizing Geospatial Data in Python कोर्स लें।
नीचे इस ट्यूटोरियल में उपयोग किया गया डेटा है: