Python數(shù)據(jù)處理-Pandas筆記
?? 基本概念
Pandas是一個強大的Python數(shù)據(jù)處理庫,它提供了高效的數(shù)據(jù)結構和數(shù)據(jù)分析工具,使數(shù)據(jù)處理變得簡單而快速。本篇筆記將介紹Pandas中最常用的數(shù)據(jù)結構——Series和DataFrame,以及數(shù)據(jù)處理的各種操作和技巧。
?? Series
(一)創(chuàng)建Series
Series是Pandas中的一維數(shù)組,類似于帶有標簽的NumPy數(shù)組。創(chuàng)建Series可以通過多種方式進行,以下是幾種常用的方法:
? 使用列表創(chuàng)建Series
import pandas as pd
data = [10, 20, 30, 40, 50]
s = pd.Series(data)
print(s)
輸出:
0 10
1 20
2 30
3 40
4 50
dtype: int64
? 使用NumPy數(shù)組創(chuàng)建Series
import pandas as pd
import numpy as np
data = np.array([10, 20, 30, 40, 50])
s = pd.Series(data)
print(s)
輸出:
0 10
1 20
2 30
3 40
4 50
dtype: int32
? 使用字典創(chuàng)建Series
import pandas as pd
data = {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50}
s = pd.Series(data)
print(s)
輸出:
a 10
b 20
c 30
d 40
e 50
dtype: int64
(二)Series的簡單操作
Series對象提供了許多方便的方法和屬性來操作數(shù)據(jù)。以下是一些常用的操作:
???訪問數(shù)據(jù)
通過索引訪問數(shù)據(jù)
import pandas as pd
data = [10, 20, 30, 40, 50]
s1 = pd.Series(data)
print(s1)
# 通過索引訪問數(shù)據(jù)
print(s1[0]) # 輸出 10
print(s1[2]) # 輸出 30
運行結果:
通過標簽訪問數(shù)據(jù)
import pandas as pd
data = [10, 20, 30, 40, 50]
s2 = pd.Series(data,index = ['a','b','c','d','e'])
print(s2)
# 通過索引訪問數(shù)據(jù)
print(s2['a']) # 輸出 10
print(s2['c']) # 輸出 30
運行結果:
??? 切片操作
import pandas as pd
data = [10, 20, 30, 40, 50]
s = pd.Series(data)
# 切片操作
print(s[1:4]) # 輸出 [20, 30, 40]
運行結果
import pandas as pd
data = [10, 20, 30, 40, 50]
s = pd.Series(data,index = ['a','b','c','d','e'])# 修改
# 切片操作
print(s['b':'d']) # 輸出 [20, 30, 40]
運行結果
??? 矢量化操作
import pandas as pd
data = [10, 20, 30, 40, 50]
s = pd.Series(data)
# 矢量化操作
print(s * 2)
輸出:
0 20
1 40
2 60
3 80
4 100
dtype: int64
??DataFrame
??? 創(chuàng)建方式
DataFrame是Pandas中的二維數(shù)據(jù)結構,可以看作是由多個Series組成的表格。創(chuàng)建DataFrame的方法有很多種,下面介紹幾種常見的方式:
? 使用列表創(chuàng)建DataFrame
import pandas as pd
data = [['Alice', 25], ['Bob', 30], ['Charlie', 35]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
print(df)
輸出:
Name Age
0 Alice 25
1 Bob 30
2 Charlie 35
?使用字典創(chuàng)建DataFrame
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)
輸出:
Name Age
0 Alice 25
1 Bob 30
2 Charlie 35
?使用NumPy數(shù)組創(chuàng)建DataFrame
import pandas as pd
import numpy as np
data = np.array([['Alice', 25], ['Bob', 30], ['Charlie', 35]])
df = pd.DataFrame(data, columns=['Name', 'Age'])
print(df)
輸出:
Name Age
0 Alice 25
1 Bob 30
2 Charlie 35
?? 數(shù)據(jù)選取
數(shù)據(jù)選取是對DataFrame中的數(shù)據(jù)進行訪問和操作的關鍵步驟。下面介紹一些常用的數(shù)據(jù)選取方法。
??? [[]]
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 選取多列數(shù)據(jù)
print(df[['Name', 'Age']])
輸出:
Name Age
0 Alice 25
1 Bob 30
2 Charlie 35
??? copy()
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 復制DataFrame
df_copy = df.copy()
??? 列操作
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 添加新列
df['Gender'] = ['Female', 'Male', 'Male']
# 刪除列
df = df.drop('Gender', axis=1)
??? 行操作
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 選取行數(shù)據(jù)
print(df.loc[0]) # 輸出第一行數(shù)據(jù)
print(df.loc[1:2]) # 輸出第二行到第三行的數(shù)據(jù)
??? 行-列
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 選取指定行列的數(shù)據(jù)
print(df.loc[0, 'Name']) # 輸出第一行的Name列數(shù)據(jù)
print(df.loc[1:2, 'Name']) # 輸出第二行到第三行的Name列數(shù)據(jù)
??? 數(shù)據(jù)篩選
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 根據(jù)條件篩選數(shù)據(jù)
filtered_df = df[df['Age'] > 30]
print(filtered_df)
?? 加載數(shù)據(jù)
在實際的數(shù)據(jù)處理中,我們常常需要從外部文件中加載數(shù)據(jù)到DataFrame中進行分析和處理。Pandas提供了多種方法來加載不同格式的數(shù)據(jù),下面介紹常用的幾種方式。
?? Txt
import pandas as pd
# 從txt文件加載數(shù)據(jù)
df = pd.read_csv('data.txt', sep='\t')
print(df)
?? Csv
import pandas as pd
# 從csv文件加載數(shù)據(jù)
df = pd.read_csv('data.csv')
print(df)
?? Excel
import pandas as pd
# 從Excel文件加載數(shù)據(jù)
df = pd.read_excel('data.xlsx')
print(df)
????? 排序與合并
數(shù)據(jù)排序和合并是數(shù)據(jù)處理中常用的操作之一。下面介紹幾種常見的排序和合并方法。
? Series排序
import pandas as pd
data = [10, 5, 8, 3, 12]
s = pd.Series(data)
# Series排序
sorted_s = s.sort_values()
print(sorted_s)
? DataFrame排序
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# DataFrame按某一列排序
sorted_df = df.sort_values('Age')
print(sorted_df)
? Rank
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 30]}
df = pd.DataFrame(data)
# 計算DataFrame的排名
ranked_df = df.rank()
print(ranked_df)
? merge(按列匹配合并)
import pandas as pd
data1 = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
data2 = {'Name': ['Alice', 'David', 'Charlie'], 'Salary': [5000, 6000, 7000]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# 按列匹配合并兩個DataFrame
merged_df = pd.merge(df1, df2, on='Name')
print(merged_df)
? concat(數(shù)據(jù)的拼接)
import pandas as pd
data1 = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
data2 = {'Name': ['Charlie', 'David'], 'Age': [35, 40]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
# 拼接兩個DataFrame
concatenated_df = pd.concat([df1, df2])
print(concatenated_df)
?? 數(shù)據(jù)匯總
在數(shù)據(jù)處理過程中,我們經(jīng)常需要對數(shù)據(jù)進行匯總和統(tǒng)計。下面介紹幾種常用的數(shù)據(jù)匯總方法。
?? 特殊值(info, describe)
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 查看DataFrame的基本信息
print(df.info())
# 查看DataFrame的統(tǒng)計信息
print(df.describe())
?? 分組統(tǒng)計
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35, 40, 45, 50],
'Salary': [5000, 6000, 7000, 8000, 9000, 10000]}
df = pd.DataFrame(data)
# 按Name列進行分組統(tǒng)計
grouped_df = df.groupby('Name').mean()
print(grouped_df)
? 時間序列
Pandas提供了強大的時間序列處理功能,方便對時間相關的數(shù)據(jù)進行分析和處理。下面介紹一些時間序列的常用操作。
??? 初始化時間序列
import pandas as pd
# 初始化時間序列
dates = pd.date_range(start='2021-01-01', periods=10, freq='D')
print(dates)
??? 時間索引
import pandas as pd
# 創(chuàng)建帶有時間索引的DataFrame
dates = pd.date_range(start='2021-01-01', periods=10, freq='D')
data = {'Value': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]}
df = pd.DataFrame(data, index=dates)
print(df)
??? 重采樣
import pandas as pd
# 創(chuàng)建帶有時間索引的DataFrame
dates = pd.date_range(start='2021-01-01', periods=10, freq='D')
data = {'Value': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]}
df = pd.DataFrame(data, index=dates)
# 對時間序列進行重采樣
resampled_df = df.resample('W').sum()
print(resampled_df)
?? 參考資料
- Pandas官方文檔
- Pandas User Guide
??希望本篇文章對你有所幫助。
??如果你有任何問題或疑惑,請隨時向提問。文章來源:http://www.zghlxwxcb.cn/news/detail-520037.html
??感謝閱讀!文章來源地址http://www.zghlxwxcb.cn/news/detail-520037.html
到了這里,關于【Python數(shù)據(jù)處理】-Pandas筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!