自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

說到Python處理大數(shù)據(jù)集,別說你會(huì)用Pandas

開發(fā) 后端
Pandas的特點(diǎn)就是很適合做數(shù)據(jù)處理,比如讀寫、轉(zhuǎn)換、連接、去重、分組聚合、時(shí)間序列、可視化等等,但Pandas的特點(diǎn)是效率略低,不擅長(zhǎng)數(shù)值計(jì)算。

說到Python處理大數(shù)據(jù)集,可能會(huì)第一時(shí)間想到Numpy或者Pandas。

這兩個(gè)庫使用場(chǎng)景有些不同,Numpy擅長(zhǎng)于數(shù)值計(jì)算,因?yàn)樗跀?shù)組來運(yùn)算的,數(shù)組在內(nèi)存中的布局非常緊湊,所以計(jì)算能力強(qiáng)。但Numpy不適合做數(shù)據(jù)處理和探索,缺少一些現(xiàn)成的數(shù)據(jù)處理函數(shù)。

而Pandas的特點(diǎn)就是很適合做數(shù)據(jù)處理,比如讀寫、轉(zhuǎn)換、連接、去重、分組聚合、時(shí)間序列、可視化等等,但Pandas的特點(diǎn)是效率略低,不擅長(zhǎng)數(shù)值計(jì)算。

你可以同時(shí)使用Pandas和Numpy分工協(xié)作,做數(shù)據(jù)處理時(shí)用Pandas,涉及到運(yùn)算時(shí)用Numpy,它們的數(shù)據(jù)格式互轉(zhuǎn)也很方便。

目前前言,最多人使用的Python數(shù)據(jù)處理庫仍然是pandas,這里重點(diǎn)說說它讀取大數(shù)據(jù)的一般方式。

Pandas讀取大數(shù)據(jù)集可以采用chunking分塊讀取的方式,用多少讀取多少,不會(huì)太占用內(nèi)存。

import pandas as pd  
  
# 設(shè)置分塊大小,例如每次讀取 10000 行  
chunksize = 10000  
  
# 使用 chunksize 參數(shù)分塊讀取 CSV 文件  
for chunk in pd.read_csv('large_file.csv', chunksize=chunksize):  
    # 在這里處理每個(gè) chunk,例如打印每行的信息  
    print(chunk.head())  # 或者其他你需要的操作  
  
    # 如果你需要保存或進(jìn)一步處理每個(gè) chunk 的數(shù)據(jù),可以在這里進(jìn)行  
    # 例如,你可以將每個(gè) chunk 寫入不同的文件,或者對(duì) chunk 進(jìn)行某種計(jì)算并保存結(jié)果

但使用分塊讀取時(shí)也要注意,不要在循環(huán)內(nèi)部進(jìn)行大量計(jì)算或內(nèi)存密集型的操作,否則可能會(huì)消耗過多的內(nèi)存或降低性能。

其次你可以考慮使用用Pandas讀取數(shù)據(jù)庫(如PostgreSQL、SQLite等)或外部存儲(chǔ)(如HDFS、Parquet等),這會(huì)大大降低內(nèi)存的壓力。

盡管如此,Pandas讀取大數(shù)據(jù)集能力也是有限的,取決于硬件的性能和內(nèi)存大小,你可以嘗試使用PySpark,它是Spark的python api接口。

PySpark提供了類似Pandas DataFrame的數(shù)據(jù)格式,你可以使用toPandas() 的方法,將 PySpark DataFrame 轉(zhuǎn)換為 pandas DataFrame,但需要注意的是,這可能會(huì)將所有數(shù)據(jù)加載到單個(gè)節(jié)點(diǎn)的內(nèi)存中,因此對(duì)于非常大的數(shù)據(jù)集可能不可行)。

相反,你也可以使用 createDataFrame() 方法從 pandas DataFrame 創(chuàng)建一個(gè) PySpark DataFrame。

PySpark處理大數(shù)據(jù)的好處是它是一個(gè)分布式計(jì)算機(jī)系統(tǒng),可以將數(shù)據(jù)和計(jì)算分布到多個(gè)節(jié)點(diǎn)上,能突破你的單機(jī)內(nèi)存限制。

其次,PySpark采用懶執(zhí)行方式,需要結(jié)果時(shí)才執(zhí)行計(jì)算,其他時(shí)候不執(zhí)行,這樣會(huì)大大提升大數(shù)據(jù)處理的效率。

from pyspark.sql import SparkSession  
  
# 創(chuàng)建一個(gè) SparkSession 對(duì)象  
spark = SparkSession.builder \  
    .appName("Big Data Processing with PySpark") \  
    .getOrCreate()  
  
# 讀取 CSV 文件  
# 假設(shè) CSV 文件名為 data.csv,并且有一個(gè)名為 'header' 的表頭  
# 你需要根據(jù)你的 CSV 文件的實(shí)際情況修改這些參數(shù)  
df = spark.read.csv("path_to_your_csv_file/data.csv", header=True, inferSchema=True)  
  
# 顯示數(shù)據(jù)集的前幾行  
df.show(5)  
  
# 對(duì)數(shù)據(jù)進(jìn)行一些轉(zhuǎn)換  
# 例如,我們可以選擇某些列,并對(duì)它們應(yīng)用一些函數(shù)  
# 假設(shè)我們有一個(gè)名為 'salary' 的列,并且我們想要增加它的值(僅作為示例)  
df_transformed = df.withColumn("salary_increased", df["salary"] * 1.1)  
  
# 顯示轉(zhuǎn)換后的數(shù)據(jù)集的前幾行  
df_transformed.show(5)  
  
# 將結(jié)果保存到新的 CSV 文件中  
# 注意:Spark 默認(rèn)不會(huì)保存表頭到 CSV,你可能需要手動(dòng)處理這個(gè)問題  
df_transformed.write.csv("path_to_save_transformed_csv/transformed_data", header=True)  
  
# 停止 SparkSession  
spark.stop()

如果你不會(huì)使用PySpark,可以考慮Pandas的拓展庫,比如modin、dask、polars等,它們提供了類似pandas的數(shù)據(jù)類型和函數(shù)接口,但使用多進(jìn)程、分布式等方式來處理大數(shù)據(jù)集。

modin庫

import modin.pandas as pd  
  
# 讀取 CSV 文件  
df = pd.read_csv('path_to_your_csv_file.csv')  
  
# 顯示前幾行  
print(df.head())

Dask庫

import dask.dataframe as dd  
  
# 讀取 CSV 文件  
df = dd.read_csv('path_to_your_csv_file.csv')  
  
# 觸發(fā)計(jì)算并顯示前幾行(注意這里使用的是 compute 方法)  
print(df.head().compute())

Polars庫

import polars as pl
  
# 讀取 CSV 文件  
df = pl.read_csv('path_to_your_csv_file.csv')  
  
# 顯示前幾行
print(df.head())

這幾個(gè)庫的好處是,使用成本很低,基本和pandas操作方式一樣,但又能很好的處理大數(shù)據(jù)。

所以說Pandas是完全能勝任處理大數(shù)據(jù)集的,它目前的周邊生態(tài)庫非常豐富。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2019-01-28 17:42:33

Python數(shù)據(jù)預(yù)處理數(shù)據(jù)標(biāo)準(zhǔn)化

2023-08-30 09:16:38

PandasPython

2020-03-11 08:00:00

.NET異常處理編程語言

2022-11-17 11:52:35

pandasPySpark大數(shù)據(jù)

2022-12-30 15:29:35

數(shù)據(jù)分析工具Pandas

2023-11-27 13:58:00

數(shù)據(jù)預(yù)處理數(shù)據(jù)標(biāo)準(zhǔn)化

2017-02-28 10:54:40

Pandas

2018-02-08 09:37:27

Pandas大數(shù)據(jù)Spark

2014-02-09 16:20:20

大數(shù)據(jù)

2019-01-10 17:08:09

華為

2020-06-24 11:59:31

PythonPandas數(shù)據(jù)處理

2024-04-08 00:00:00

asyncawaiPromise

2022-02-10 09:04:50

架構(gòu)

2020-05-19 17:09:33

Pandas大數(shù)據(jù)數(shù)據(jù)分析

2023-09-25 13:19:41

pandasPython

2023-12-12 11:06:37

PythonPandas數(shù)據(jù)

2020-10-29 06:02:44

PythonPandasExcel

2021-08-12 08:00:00

Pandas數(shù)據(jù)分析SQL

2019-08-27 17:32:10

數(shù)據(jù)處理PandasPython

2021-05-06 05:30:33

JSONstringify()parse()
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)