动态Pandas数据帧生成指的是在程序运行时根据需要创建和修改DataFrame对象,而不是在代码中静态定义。Pandas是Python中强大的数据分析库,DataFrame是其核心数据结构,类似于电子表格或SQL表。
import pandas as pd
data = {
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'London', 'Paris']
}
df = pd.DataFrame(data)
df['Salary'] = [50000, 60000, 70000] # 添加新列
df['Bonus'] = df['Salary'] * 0.1 # 基于现有列计算新列
new_row = {'Name': 'David', 'Age': 40, 'City': 'Berlin', 'Salary': 80000, 'Bonus': 8000}
df = df.append(new_row, ignore_index=True)
data = [
['Alice', 25, 'New York'],
['Bob', 30, 'London'],
['Charlie', 35, 'Paris']
]
df = pd.DataFrame(data, columns=['Name', 'Age', 'City'])
import numpy as np
# 生成随机数据
df = pd.DataFrame({
'A': np.random.rand(100),
'B': np.random.randint(0, 100, 100),
'C': np.random.choice(['X', 'Y', 'Z'], 100)
})
def data_generator(n):
for i in range(n):
yield {'ID': i, 'Value': i * 10}
df = pd.DataFrame(data_generator(5))
原因:频繁追加行会导致内存重新分配
解决方案:
pd.concat()
替代append()
# 更高效的方式
rows = []
for i in range(1000):
rows.append({'A': i, 'B': i*2})
df = pd.DataFrame(rows)
原因:动态添加数据可能导致列数据类型变化
解决方案:
astype()
转换类型df = pd.DataFrame(columns=['A', 'B'])
df = df.astype({'A': 'int32', 'B': 'float64'})
原因:生成的数据量过大
解决方案:
原因:动态生成的列名可能重复
解决方案:
if 'new_column' not in df.columns:
df['new_column'] = values
# 动态选择分组列和统计方法
group_cols = ['City']
agg_funcs = {'Salary': ['mean', 'max'], 'Age': 'median'}
result = df.groupby(group_cols).agg(agg_funcs)
# 根据条件动态添加列
df['Status'] = np.where(df['Age'] > 30, 'Senior', 'Junior')
# 动态表达式计算
df.eval('Total = Salary + Bonus', inplace=True)
动态Pandas数据帧生成为数据处理提供了极大的灵活性,但也需要注意性能优化和内存管理,特别是在处理大规模数据时。
没有搜到相关的文章