Pandas是一个强大的Python数据处理库,它提供了高效的数据结构和数据分析工具,使数据处理变得简单而快速。本篇笔记将介绍Pandas中最常用的数据结构——Series和DataFrame,以及数据处理的各种操作和技巧。
Series是Pandas中的一维数组,类似于带有标签的NumPy数组。创建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
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
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对象提供了许多方便的方法和属性来操作数据。以下是一些常用的操作:
import pandas as pd
data = [10, 20, 30, 40, 50]
s1 = pd.Series(data)
print(s1)
# 通过索引访问数据
print(s1[0]) # 输出 10
print(s1[2]) # 输出 30
import pandas as pd
data = [10, 20, 30, 40, 50]
s2 = pd.Series(data,index = ['a','b','c','d','e'])
print(s2)
# 通过索引访问数据
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是Pandas中的二维数据结构,可以看作是由多个Series组成的表格。创建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
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
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
数据选取是对DataFrame中的数据进行访问和操作的关键步骤。下面介绍一些常用的数据选取方法。
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 选取多列数据
print(df[['Name', 'Age']])
输出:
Name Age
0 Alice 25
1 Bob 30
2 Charlie 35
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)
# 选取行数据
print(df.loc[0]) # 输出第一行数据
print(df.loc[1:2]) # 输出第二行到第三行的数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 选取指定行列的数据
print(df.loc[0, 'Name']) # 输出第一行的Name列数据
print(df.loc[1:2, 'Name']) # 输出第二行到第三行的Name列数据
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 根据条件筛选数据
filtered_df = df[df['Age'] > 30]
print(filtered_df)
在实际的数据处理中,我们常常需要从外部文件中加载数据到DataFrame中进行分析和处理。Pandas提供了多种方法来加载不同格式的数据,下面介绍常用的几种方式。
import pandas as pd
# 从txt文件加载数据
df = pd.read_csv('data.txt', sep='\t')
print(df)
import pandas as pd
# 从csv文件加载数据
df = pd.read_csv('data.csv')
print(df)
import pandas as pd
# 从Excel文件加载数据
df = pd.read_excel('data.xlsx')
print(df)
数据排序和合并是数据处理中常用的操作之一。下面介绍几种常见的排序和合并方法。
import pandas as pd
data = [10, 5, 8, 3, 12]
s = pd.Series(data)
# Series排序
sorted_s = s.sort_values()
print(sorted_s)
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)
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)
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)
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)
在数据处理过程中,我们经常需要对数据进行汇总和统计。下面介绍几种常用的数据汇总方法。
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
# 查看DataFrame的基本信息
print(df.info())
# 查看DataFrame的统计信息
print(df.describe())
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列进行分组统计
grouped_df = df.groupby('Name').mean()
print(grouped_df)
Pandas提供了强大的时间序列处理功能,方便对时间相关的数据进行分析和处理。下面介绍一些时间序列的常用操作。
import pandas as pd
# 初始化时间序列
dates = pd.date_range(start='2021-01-01', periods=10, freq='D')
print(dates)
import pandas as pd
# 创建带有时间索引的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
# 创建带有时间索引的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)
⭐️希望本篇文章对你有所帮助。
⭐️如果你有任何问题或疑惑,请随时向提问。
⭐️感谢阅读!