1. 从字典创建:字典的键成为列名,值成为列数据。
import pandas as pd
# 通过字典创建 DataFrame
df = pd.DataFrame({'Column1': [1, 2, 3], 'Column2': [4, 5, 6]})
2. 从列表的列表创建:外层列表代表行,内层列表代表列。
df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]],
columns=['Column1', 'Column2', 'Column3'])
3. 从 NumPy 数组创建:提供一个二维 NumPy 数组。
import numpy as np
# 通过 NumPy 数组创建 DataFrame
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
4. 从 Series 创建 DataFrame:通过 pd.Series() 创建。
# 从 Series 创建 DataFrame
s1 = pd.Series(['Alice', 'Bob', 'Charlie'])
s2 = pd.Series([25, 30, 35])
s3 = pd.Series(['New York', 'Los Angeles', 'Chicago'])
df = pd.DataFrame({'Name': s1, 'Age': s2, 'City': s3})
5.DataFrame 属性和方法
DataFrame 对象有许多属性和方法,用于数据操作、索引和处理,例如:shape、columns、index、head()、tail()、info()、describe()、mean()、sum() 等。
# DataFrame 的属性和方法
print(df.shape) # 形状
print(df.columns) # 列名
print(df.index) # 索引
print(df.head()) # 前几行数据,默认是前 5 行
print(df.tail()) # 后几行数据,默认是后 5 行
print(df.info()) # 数据信息
print(df.describe())# 描述统计信息
print(df.mean()) # 求平均值
print(df.sum()) # 求和
6.访问 DataFrame 元素
使用列名作为属性或通过 .loc[]、.iloc[] 访问,也可以使用标签或位置索引。使用行的标签和 .loc[] 访问。
# 通过属性访问
print(df.Name)
# 通过 .iloc[] 访问
print(df.iloc[:, 0])
# 访问单个元素
print(df['Name'][0])
7.修改列数据:直接对列进行赋值
df['Column1'] = [10, 11, 12]
8.添加新列:给新列赋值
df['NewColumn'] = [100, 200, 300]
9.添加新行:使用 concat 方法
concat() 方法用于合并两个或多个 DataFrame,当你想要添加一行到另一个 DataFrame 时,可以将新行作为一个新的 DataFrame,然后使用 concat()
# 使用concat添加新行
new_row = pd.DataFrame([[4, 7]], columns=['A', 'B']) # 创建一个只包含新行的DataFrame
df = pd.concat([df, new_row], ignore_index=True) # 将新行添加到原始DataFrame
print(df)
10.删除列:使用 drop 方法
df_dropped = df.drop('Column1', axis=1)
11.删除行:同样使用 drop 方法
df_dropped = df.drop(0) # 删除索引为 0 的行
12.描述性统计:使用 .describe() 查看数值列的统计摘要
df.describe()
13.重置索引:使用 .reset_index()
df_reset = df.reset_index(drop=True)
14.设置索引:使用 .set_index()
df_set = df.set_index('Column1')
15.使用布尔表达式:根据条件过滤 DataFrame
df[df['Column1'] > 2]
16.查看数据类型:使用 dtypes 属性
df.dtypes
17.转换数据类型:使用 astype 方法
df['Column1'] = df['Column1'].astype('float64')
18.DataFrame 支持对行和列进行索引和切片操作
# 索引和切片
print(df[['Name', 'Age']]) # 提取多列
print(df[1:3]) # 切片行
print(df.loc[:, 'Name']) # 提取单列
print(df.loc[1:2, ['Name', 'Age']]) # 标签索引提取指定行列
print(df.iloc[:, 1:]) # 位置索引提取指定列