学习python中的pandas模块包

# Create Date: 2024/9/6 17:03
# About context: test panda
import pandas as pd
# 场景一:数据清洗
# 假设我们有一个包含缺失值和重复值的CSV文件,我们需要清洗数据以便后续分析。
# 读取数据
dataFrame = pd.read_csv('d:\\闸站采集数据表.csv', encoding='GBK')
# 显示前五行数据
print("dataTtype=",type(dataFrame))
print(dataFrame.head())
# print(dataFrame.columns.values)
print("dataFrame.dtypes=",dataFrame.dtypes)
print("dataFrame.keys()=",dataFrame.keys())
print("dataFrame[‘采集时间’][0]=",dataFrame['采集时间'][0])
# print(dataFrame.tail())
# 处理缺失值
dataFrame = dataFrame.dropna()  # 删除含有缺失值的行

# dataFrame = dataFrame.fillna(0)  # 或者将缺失值填充为0
# 去除重复值
dataFrame = dataFrame.drop_duplicates()
# 显示处理后的数据
# print(dataFrame.head())

data1={'id':[1,2,3,4],
       'name':['桔子','香蕉','苹果','桃子'],
       'price':[10,20,10,18],
       'weight':[100,150,50,80],
       }
pdData= pd.DataFrame(data1)
print("===========================================")
print(pdData)
# pdData.sort_values(by=['price'],ascending=False)

print("-----------------------------------------")
newDF=pdData.sort_values(['price','weight'],ascending=True)
print(newDF)
pdData['price_per_gram']=pdData['price']/pdData['weight']
newDF2=pdData.sort_values(['price','price_per_gram'],ascending=True)
print(newDF2)
print('*****************************')
newDF2.set_index(['id','name'],inplace=True)
print(newDF2)
print('&&&&&&&&&&',newDF2.columns.values)
# newD1=pd.Series([10,14,19,33],index=[1,2,3,4],name='test')
newD1=pd.Series([10,14,19,33,None],index=list('12345'),name='test')
print(type(newD1))
print(newD1)
print(newD1.get('2'))
print("===========================================")

# 场景二:数据转换
# 假设我们有一个数据集,其中包含多种数据类型的列。我们需要将特定的列转换为适当的数据类型,以便进行正确的计算。
# 示例数据
data = {
    'A': ['1', '2', '3'],
    'B': ['4.1', '5.2', '6.3'],
    'C': ['2023-01-01', '2023-02-01', '2023-03-01']
}
df = pd.DataFrame(data)

# 数据类型转换
df['A'] = df['A'].astype(int)
df['B'] = df['B'].astype(float)
df['C'] = pd.to_datetime(df['C'])

# 显示转换后的数据类型
print(df.dtypes)


# 场景三:数据合并
# 假设我们有两个数据集,我们需要将它们合并在一起,以便进行综合分析。
# 示例数据
data1 = {
    'key': ['A', 'B', 'C'],
    'value1': [1, 2, 3]
}
data2 = {
    'key': ['A', 'B', 'D'],
    'value2': [4, 5, 6]
}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 数据合并
merged_data = pd.merge(df1, df2, on='key', how='inner')

# 显示合并后的数据
print(merged_data)

# 场景四:数据分组与聚合
# 假设我们有一个销售数据集,我们需要按地区和月份计算每个地区的总销售额。
# 示例数据
data = {
    '地区': ['东区', '西区', '南区', '北区', '东区', '西区'],
    '月份': ['2023-01', '2023-01', '2023-01', '2023-01', '2023-02', '2023-02'],
    '销售额': [100, 200, 150, 300, 400, 250]
}
df = pd.DataFrame(data)

# 数据分组与聚合
grouped_data = df.groupby(['地区', '月份']).sum().reset_index()

# 显示分组与聚合后的数据
print(grouped_data)

# 场景五:数据筛选
# 假设我们有一个包含多列数据的数据集,我们需要筛选出符合特定条件的行。
# 示例数据
data = {
    '姓名': ['张三', '李四', '王五', '赵六'],
    '年龄': [23, 45, 12, 35],
    '城市': ['北京', '上海', '广州', '深圳']
}
df = pd.DataFrame(data)

# 筛选年龄大于30岁的行
filtered_data = df[df['年龄'] > 30]

# 显示筛选后的数据
print(filtered_data)

# 场景六:数据透视表
# 假设我们有一个包含销售数据的数据集,我们需要生成一个透视表,以便更好地观察数据。
# 示例数据
data = {
    '产品': ['A', 'B', 'A', 'B', 'A', 'B'],
    '销售员': ['张三', '李四', '王五', '赵六', '张三', '李四'],
    '销售额': [100, 200, 150, 300, 400, 250]
}
df = pd.DataFrame(data)

# 生成透视表
pivot_table = pd.pivot_table(df, values='销售额', index=['产品'], columns=['销售员'], aggfunc='sum', fill_value=0)

# 显示透视表
print(pivot_table)

# 场景七:时间序列分析
# 假设我们有一个时间序列数据集,我们需要进行时间序列分析,比如计算移动平均值。
# 示例数据
data = {
    '日期': pd.date_range(start='2023-01-01', periods=10, freq='D'),
    '销售额': [100, 200, 150, 300, 400, 250, 300, 350, 200, 150]
}
df = pd.DataFrame(data)

# 设置日期为索引
df.set_index('日期', inplace=True)

# 计算7天移动平均值
df['移动平均'] = df['销售额'].rolling(window=7).mean()

# 显示结果
print(df)


# 场景八:数据重塑
# 假设我们有一个长格式的数据集,我们需要将其重塑为宽格式,以便于分析。
# 示例数据
data = {
    '日期': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
    '变量': ['A', 'B', 'A', 'B'],
    '值': [10, 20, 30, 40]
}
df = pd.DataFrame(data)

# 重塑数据
reshaped_data = df.pivot(index='日期', columns='变量', values='值')

# 显示重塑后的数据
print(reshaped_data)

# 场景九:缺失值处理
# 假设我们有一个包含缺失值的数据集,我们需要填充这些缺失值以便进行后续分析。
# 示例数据
data = {
    'A': [1, 2, None, 4],
    'B': [None, 2, 3, 4],
    'C': [1, None, None, 4]
}
df = pd.DataFrame(data)


# 填充缺失值
# df.fillna(method='ffill',inplace=True)  # 向前填充
df.bfill() # 向前填充 新版本的写法

# 显示填充后的数据
print(df)


# 场景十:数据合并与连接
# 假设我们有两个数据集,我们需要通过特定的键进行连接。
# 示例数据
left_data = {
    'key': ['K0', 'K1', 'K2', 'K3'],
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3']
}
right_data = {
    'key': ['K0', 'K1', 'K2', 'K4'],
    'C': ['C0', 'C1', 'C2', 'C4'],
    'D': ['D0', 'D1', 'D2', 'D4']
}
left = pd.DataFrame(left_data)
right = pd.DataFrame(right_data)

# 数据连接
result = pd.merge(left, right, how='left', on='key')

# 显示连接后的数据
print(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值