Pandas is great for data munging and with the help of GeoPandas, these capabilities expand into the spatial realm.
With just two lines, it’s quick and easy to transform a plain headerless CSV file into a GeoDataFrame. (If your CSV is nice and already contains a header, you can skip the header=None
and names=FILE_HEADER
parameters.)
usecols=USE_COLS
is also optional and allows us to specify that we only want to use a subset of the columns available in the CSV.
After the obligatory imports and setting of variables, all we need to do is read the CSV into a regular DataFrame and then construct a GeoDataFrame.
import pandas as pd from geopandas import GeoDataFrame from shapely.geometry import Point FILE_NAME = "/temp/your.csv" FILE_HEADER = ['a', 'b', 'c', 'd', 'e', 'x', 'y'] USE_COLS = ['a', 'x', 'y'] df = pd.read_csv( FILE_NAME, delimiter=";", header=None, names=FILE_HEADER, usecols=USE_COLS) gdf = GeoDataFrame( df.drop(['x', 'y'], axis=1), crs={'init': 'epsg:4326'}, geometry=[Point(xy) for xy in zip(df.x, df.y)])
It’s also possible to create the point objects using a lambda function as shown by weiji14 on GIS.SE.