Python–常用模块脚本–pandas

#.pandas

文章目录

# coding=utf8
import numpy as np
import pandas as pd

# CSV是文本文件,用记事本就能打开。XLS 是二进制的文件只有用 EXCEL 才能打开;
# CSV 文件格式只能保存活动工作表中的单元格所显示的文本和数值。数据列以逗号分隔,每一行数据都以回车符结束。如果单元格中包含逗号,则该单元格中的内容以双引号引起。
# 如果单元格显示的是公式而不是数值,该公式将转换问文本方式。所有格式、图形、对象和工作表的其他内容将全部丢失。
# 若只是保存一点文本信息用,CSV 文件就可以了,但是若有设定公式,冻结列等其他东西则用 XLS。

# 1、导入csv或者xlsx文件
df = pd.DataFrame(pd.read_csv('stock.csv', header=0))
# df = pd.DataFrame(pd.read_excel('name.xlsx'))

df2 = pd.DataFrame({"id": [1001, 1002, 1003, 1004, 1005, 1006],
                    "date": pd.date_range('20130102', periods=6),
                    "city": ['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
                    "age": [23, 44, 54, 32, 34, 32],
                    "category": ['100-A', '100-B', '110-A', '110-C', '210-A', '130-F'],
                    "price": [1200, np.nan, 2133, 5433, np.nan, 4432]},
                   columns=['id', 'date', 'city', 'category', 'age', 'price'])
df3 = pd.DataFrame(pd.read_csv('students.csv', header=0))

# 2、数据表信息查看
# print(df.shape)  # 维度
# print(df.info())  # 基本信息
# print(df.dtypes)  # 每一列数据的格式
# print(df.values)  # 查看数据表的值
# print(df.columns)  # 查看列名称
# print(df.head())  # 前5行数据
# print(df.tail())  # 后5行数据
# print(df['Date'].dtype)  # 某一列格式
# print(df.isnull())  # 空值
# print(df['Date'].isnull())  # 查看某一列空值
# print(df['Price'].unique())  # 查看某一列的唯一值

# 3、数据表清洗
# df3 = df3.fillna(value=0)  # 用数字0填充空值
# df3['age'] = df3['age'].fillna(df3['age'].mean())  # 使用列prince的均值对NA进行填充
# df3['name'] = df3['name'].map(str.strip)  # 除city字段的字符空格
# df3['name'] = df3['name'].str.upper()  # 大小写转换
# df3['name'] = df3['name'].drop_duplicates()  # 删除后出现的重复值,NaN
# df3['name'] = df3['name'].drop_duplicates(keep='last')  # 删除先出现的重复值,NaN
# df3['id'].astype('int')  # 更改数据格式
# df3 = df3.rename(columns={'like': 'preference'})  # 更改列名称
# df3['name'] = df3['name'].replace('xiaoli', 'xiaohan')  # df3['name']

# 4、数据预处理
df4 = pd.DataFrame({"id": [3, 4, 5, 6],
                    "name": ['xiaoli', 'dahong', 'daqiang', 'dahan'],
                    "age": [14, 22, np.nan, 24],
                    "like": ['play', 'book', 'run', 'play']})
df5 = pd.DataFrame({"pay": ['Y', 'Y', 'N', 'N']}, index=[3, 4, 5, 7])
# 数据表合并
df_inner = pd.merge(df3, df4, how='inner')  # 交集
df_outer = pd.merge(df3, df4, how='outer')  # 并集
df_merge = df3.append(df4)  # 合并
df_join = df4.join(df5, on='id')  # 右表的索引是左表某一列值
df_concat = pd.concat([df3, df4, df5])  # 多数据表合并
# 排序
df_merge = df_merge.sort_values(by=['name'])  # 按照特定列的值排序
df_merge = df_merge.set_index('id')  # 设置索引列
# df_merge = df_merge.reset_index()  # 取消索引列
df_merge = df_merge.sort_index()  # 按照索引列排序
df_merge['adult'] = np.where(df_merge['age'] > 15, 'Yes', 'No')  # 新增列,条件判断
df_merge.loc[(df_merge['name'] == 'xiaoli') & (df_merge['age'] >= 14), 'sign'] = 1  # 新增列,标记
df_merge_name = pd.DataFrame((x.upper() for x in df_merge['name']), index=df_merge.index, columns=['name'])  # x.upper()结果创建新数据表

# 5、数据提取
# print(df_merge.loc[0])  # 提取第一行数值
# print(df_merge.iloc[0:5])  # 提取第一行到第五行数值
# print(df_merge[:6])  # 提取前6行数据
# print(df_merge.iloc[:5, :3])  # 前5行,前3列
# print(df_merge.iloc[[1, 2, 4], [0, 1]])  # 2,3,5行,1,2列
# print(df_merge['age'].isin([14]))  # 判断age列的值是否为14
# print(df_merge.loc[df_merge['age'].isin([14, 24])])  # 筛选出符合条件数据
# print(pd.DataFrame(df_merge['name'].str[:3]))  # 提取前三个字符,并生成数据表

# 6、数据筛选
# & | !=  与或非
# print(df_merge.loc[(df_merge['age'] > 10) & (df_merge['name'] == 'xiaoli'), ['name', 'age', 'like', 'adult']])
# print(df_merge.loc[(df_merge['age'] > 10) & (df_merge['name'] == 'xiaoli'), ['name', 'age', 'like', 'adult']].age.count())
# print(df_merge.query('name == ["xiaoli", "xiaohong"]'))  # query筛选
# print(df_merge.query('name == ["xiaoli", "xiaohong"]').age.sum())  # 筛选完求和

# 7、数据汇总
# print(df_merge.groupby('name').count())  # 按照指定列进行数据统计
# print(df_merge.groupby('name')['age'].count())  # 按照指定列指定字段进行数据统计
# print(df_merge.groupby(['name', 'age']).count())  # 多列统计
# print(df_merge.groupby('name')['age'].agg([len, np.sum, np.mean]))  # 个数、和、平均值

# 8、数据统计
# 采样、标准差、协方差、相关性

# 9、数据输出
df_merge.to_excel('students_write.xlsx', sheet_name='test')
df_merge.to_csv('students_write.csv')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柴寺仓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值