1. 创建Series和DataFrame
import numpy as np
import pandas as pd
data_series = pd.Series([2, 4, np.nan, 6, 8])
date_range = pd.date_range('20000101', periods=5)
data_frame = pd.DataFrame(np.random.randn(5, 3), index=date_range, columns=['X', 'Y', 'Z'])
# 使用np.random.randn生成随机数,构建一个5行3列的数据框。
data_frame_custom = pd.DataFrame({
'Col1': [10, 20, 30, 40],
'Col2': pd.Timestamp('20230101'),
'Col3': pd.Series([5] * 4, dtype='float64'),
'Col4': np.array([7] * 4, dtype='int32'),
'Col5': pd.Categorical(['red', 'green', 'blue', 'yellow']),
'Col6': 'sample'
})
2. 查看与排序
print(data_frame_custom.dtypes) # 查看每列的数据类型。
print(data_frame_custom.dtypes.value_counts()) # 统计各数据类型的数量。
print(data_frame_custom.head(3)) # 显示前3行。
print(data_frame_custom.tail(3)) # 显示后3行。
print(data_frame_custom.index) # 获取行索引。
print(data_frame_custom.columns) # 获取列索引。
print(data_frame_custom.values) # 返回所有值的数组形式。
print(data_frame_custom.describe()) # 描述数值型数据的统计信息。
print(data_frame_custom.T) # 转置数据框。
# 排序操作:
sorted_df = data_frame.sort_index(axis=0, ascending=False) # 按行索引降序排列。
sorted_columns = data_frame.sort_index(axis=1, ascending=True) # 按列索引升序排列。
sorted_values = data_frame.sort_values(by='X') # 按指定列(如'X')进行排序。
3. 元素选取
3.1 使用方括号[]
print(data_frame[0:2]) # 切片访问行。
print(data_frame['20000101':'20000102']) # 根据日期索引切片。
print(data_frame['X']) # 访问单列。
print(data_frame[['X', 'Y']]) # 同时访问多列。
3.2 loc方法
print(data_frame.loc[date_range[0]]) # 按标签访问某一行。
print(data_frame.loc[:, ['X', 'Y']]) # 访问指定列。
print(data_frame.loc['20000101':'20000103', ['X', 'Y']]) # 结合日期范围与列名。
print(data_frame.loc[date_range[0], 'X']) # 单元格定位。
print(data_frame.at[date_range[0], 'X']) # 快速访问单元格。
3.3 iloc方法
print(data_frame.iloc[1]) # 按位置访问某一行。
print(data_frame.iloc[1:3, 0:2]) # 切片访问行列。
print(data_frame.iloc[[0, 2], [0, 2]]) # 定位特定行列。
print(data_frame.iloc[1:3, :]) # 切片行并选择所有列。
print(data_frame.iat[1, 1]) # 快速访问单个元素。
3.4 条件选取
filtered_df = data_frame[data_frame['X'] > 0] # 筛选满足条件的行。
filtered_all = data_frame[data_frame > 0] # 对整个数据框应用条件。
copy_df = data_frame.copy()
copy_df['Category'] = ['A', 'B', 'C', 'D', 'E'] # 添加新列。
print(copy_df[copy_df['Category'].isin(['A', 'C'])]) # 筛选指定类别的行。
# 使用query方法筛选:
result = copy_df.query("X >= 1") # 筛选列X大于等于1的所有行。