pandas是python數據分析的核心工具,安裝使用pip install pandas,導入為import pandas as pd。創建dataframe可從字典或csv文件讀取,如pd.dataframe(data)或pd.read_csv(‘your_data.csv’)。數據選擇可通過列名或條件過濾實現,如df[‘姓名’]或df[df[‘年齡’] >= 28]。數據清洗包括填充缺失值fillna()、刪除缺失值dropna()和去重drop_duplicates()。類型轉換用astype()函數,應用函數可用apply()方法。數據聚合與分組通過groupby()完成,如按城市計算平均年齡。處理大型數據集時,可用分塊讀取read_csv+chunksize、dask并行計算或優化數據類型。與sql交互可用read_sql_query讀取和to_sql寫入數據庫。時間序列分析支持date_range創建序列、resample重采樣和rolling移動窗口計算。掌握這些技巧能高效挖掘數據價值。
Pandas是python數據分析的瑞士軍刀,掌握它能讓你在數據世界里暢游無阻。它不僅提供了高效的數據結構,還內置了大量數據處理函數,讓數據清洗、轉換、分析變得輕松愉快。
Pandas的核心在于DataFrame和Series這兩種數據結構。DataFrame可以看作是電子表格或SQL表,而Series則是一維的、帶標簽的數組。
解決方案
-
安裝Pandas:
立即學習“Python免費學習筆記(深入)”;
pip install pandas
-
導入Pandas:
import pandas as pd
-
創建DataFrame:
-
從字典創建:
data = {'姓名': ['Alice', 'Bob', 'Charlie'], '年齡': [25, 30, 28], '城市': ['北京', '上海', '深圳']} df = pd.DataFrame(data) print(df)
-
從csv文件讀取:
df = pd.read_csv('your_data.csv') # 假設你的數據文件名為your_data.csv print(df.head()) # 查看前幾行數據
-
-
數據選擇與過濾:
-
選擇列:
names = df['姓名'] # 選擇'姓名'列 print(names)
-
按條件過濾:
adults = df[df['年齡'] >= 28] # 選擇年齡大于等于28歲的人 print(adults)
-
-
數據清洗:
-
處理缺失值:
# 填充缺失值 df_filled = df.fillna(0) # 用0填充所有缺失值 df_filled_mean = df.fillna(df.mean(numeric_only=True)) # 用均值填充數值列的缺失值 # 刪除包含缺失值的行 df_dropna = df.dropna()
-
刪除重復值:
df_deduplicated = df.drop_duplicates()
-
-
數據轉換:
-
類型轉換:
df['年齡'] = df['年齡'].astype(int) # 將'年齡'列轉換為整數類型
-
應用函數:
def add_prefix(name): return 'Mr./Ms. ' + name df['姓名'] = df['姓名'].apply(add_prefix) # 給'姓名'列的每個值添加前綴 print(df)
-
-
數據聚合與分組:
# 按城市分組,計算平均年齡 grouped = df.groupby('城市')['年齡'].mean() print(grouped)
如何高效地處理大型數據集?
當數據集變得龐大時,Pandas的處理速度可能會下降。這時,可以考慮以下策略:
-
分塊讀取: 使用pd.read_csv的chunksize參數,將大文件分成小塊讀取。
for chunk in pd.read_csv('large_data.csv', chunksize=10000): # 處理每個數據塊 process_chunk(chunk)
-
使用Dask: Dask是一個并行計算庫,可以與Pandas無縫集成,加速數據處理。
import dask.dataframe as dd ddf = dd.read_csv('large_data.csv') result = ddf.groupby('城市')['年齡'].mean().compute() # 使用compute()觸發計算 print(result)
-
優化數據類型: 確保DataFrame使用合適的數據類型,例如將字符串類型轉換為category類型可以節省內存。
df['城市'] = df['城市'].astype('category')
Pandas DataFrame與SQL數據庫的交互技巧
Pandas可以方便地與SQL數據庫進行交互,讓你在Python中直接操作數據庫數據。
-
讀取SQL數據:
import sqlite3 conn = sqlite3.connect('your_database.db') query = "SELECT * FROM your_table" df = pd.read_sql_query(query, conn) conn.close() print(df.head())
-
寫入DataFrame到SQL:
import sqlite3 from sqlalchemy import create_engine #方法一:使用sqlite3 conn = sqlite3.connect('your_database.db') df.to_sql('new_table', conn, if_exists='replace', index=False) # if_exists參數控制如何處理已存在的表 conn.close() #方法二:使用sqlalchemy engine = create_engine('sqlite:///your_database.db') df.to_sql('new_table', engine, if_exists='replace', index=False) engine.dispose()
如何利用Pandas進行時間序列分析?
Pandas對時間序列數據提供了強大的支持,可以方便地進行時間序列分析。
-
創建時間序列:
dates = pd.date_range('2023-01-01', periods=100, freq='D') # 創建一個從2023-01-01開始,長度為100天的時間序列 ts = pd.Series(range(100), index=dates) print(ts.head())
-
重采樣:
# 將數據按月重采樣,并計算平均值 monthly_mean = ts.resample('M').mean() print(monthly_mean)
-
移動窗口:
# 計算7天移動平均 rolling_mean = ts.rolling(window=7).mean() print(rolling_mean.head(10))
掌握這些技巧,你就能在Python中利用Pandas輕松駕馭數據,挖掘出有價值的信息。