博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python之pandas入门操作
阅读量:4325 次
发布时间:2019-06-06

本文共 4404 字,大约阅读时间需要 14 分钟。

本文章是建议入门者直接上手操作,在操作中再去想为什么,是什么?

--理论知识暂时不写了,可自行百度 ,跟着代码来入门,简单粗暴。

import pandas as pdimport numpy as npfrom pandas import Series,DataFrame#数据结构:Series 和DataFrame#Series 是一个定长的字典序列  定长:相当于两个ndarray#Series有两个基本属性:index和values   index默认0,1,2...递增  可以自定义索引如: index=['a','b'..]x1 = Series([1,2,3,4])# print(x1)x2 = Series(data=[1,2,3,4],index=['a','b','c','d'])# print(x2)#也可用字典的方式来创建Seriesd = {
'a':1,'b':2,'c':3,'d':4}x3 = Series(d)# print(x3)#DataFrame 类型数据结构-类似数据库表——包含了行索引和列索引data = {
'chinese':[66,95,93,90,80],'English':[65,85,92,88,90],'Math':[30,98,96,77,90]}df1 = DataFrame(data)# print(df1)#设置行索引index 以及列索引columnsdf2 = DataFrame(data,index=['ZhangFei','GuanYu','ZhaoYun','HuangZhong','DianWei'],columns=['English','Math','chinese'])# print(df2)"""df1 结果 chinese English Math0 66 65 301 95 85 982 93 92 963 90 88 774 80 90 90df2结果 English Math chineseZhangFei 65 30 66GuanYu 85 98 95ZhaoYun 92 96 93HuangZhong 88 77 90DianWei 90 90 80"""#了解了基本的Series和DataFrame两个数据结构后,我们从数据处理的流程来继续学习使用方法#数据的导入和输出#pandas允许直接从xlsx,csv文件中导入数据,也可输出到xlsx,csv中#xlsx excel文件自行准备score = DataFrame(pd.read_excel('pandas_data.xlsx'))# score.to_excel('data1.xlsx')# df2.to_excel('data1.xlsx')#pip install openpyxl#pip install pandas# print(score)#数据清洗# drop()删除不需要的行或列# df2 = df2.drop(index=['ZhangFei'])# df2 = df2.drop(columns=['chinese'])# print(df2)# rename重命名列名 columns, rename(columns=new_name,inplace=True)# df2.rename(columns={'chinese':'Yuwen','English':'Yingyu'},inplace=True)# print(df2)#去重复的值 drop_duplicates() 自动去重行data1 = {
'chinese':[66,66,95,93,90,80],'English':[65,65,85,92,88,90],'Math':[30,30,98,96,77,90]}df3 = DataFrame(data1,index=['ZhangFei','ZhangFei','GuanYu','ZhaoYun','HuangZhong','DianWei'],columns=['English','Math','chinese'])df3 = df3.drop_duplicates()# print(df3)#格式问题---更改数据格式--astype()#eg:将chinese字段值改成str或者int64类型df3['chinese'].astype('str')# import numpy as np# df3['chinese'].astype(np.int64)# print(df3)#数据间的空格--先把格式转换成str类型,strip函数去空格 map()映射# df3['chinese']=df3['chinese'].map(str.strip)# #删除左空格# df3['chinese']=df3['chinese'].map(str.lstrip)# #右空格# df3['chinese']=df3['chinese'].map(str.rstrip)# #特殊字符# df3['chinese']=df3['chinese'].map(str.rstrip('$'))#大小写转换#小df3.columns=df3.columns.str.upper()#大df3.columns=df3.columns.str.lower()#首字母大写df3.columns=df3.columns.str.title()# 查找空值 空值NAN isnull()df3.isnull() #对应字段 返回True或Flask#apply函数对数据进行清洗--使用频率较高#eg:大小写转化# apply(str.upper)df4 = DataFrame(data={
'name':'ZhangSan'},index=['1'])# print(df4)df4['name'] = df4['name'].apply(str.upper)# print(df4)#apply也可定义函数在apply中使用 apply(func)#数据统计#如果有遇到控制NaN会自动排除#min() max() sum() mean() 平均值#median() 中位数 var()方差 std()标准差#argmin()统计最小值的索引位置 argmax()统计最大值的索引位置#idmin() 统计最小值的索引值 idxmax()统计最大值的索引值######统计函数千千万,describe()函数最便捷 统计大礼包。。df6 = DataFrame({
'name':['ZhangFei', 'GuanYu', 'a', 'b', 'c'], 'data1':range(5)})# print(df6.describe())# print(df6)""" data1count 5.000000mean 2.000000std 1.581139min 0.00000025% 1.00000050% 2.00000075% 3.000000max 4.000000"""#数据合并#将多个渠道源的多个数据库表进行合并,#一个DataFrame为一个数据表内容 两个合并使用merge()df7 = DataFrame({
'name':['Zhangfei','lisi','zhangsan,','a']})df8 = DataFrame({
'name':['Zhangfei','lisi','a,','a']})#基于指定列进行连接---健的交集# df9 = pd.merge(df7,df8,on='name')#inner内连接内链接是 merge 合并的默认情况,inner 内连接也为健交集df9 = pd.merge(df7,df8,how='inner')# print(df9)#如何用SQL方式打开Pandas#可以直接使用sql语句来操作pandasfrom pandasql import sqldf,load_meat,load_birthsdf10 = DataFrame({
'name':['ZhangFei','GuanYu','a','b','c'],'data1':range(5)})#将sql作为参数传入匿名函数中 sql参数, 设置globals全局参数pydf10 = lambda sql:sqldf(sql,globals())sql = "select * from df10 where name='ZhangFei'"print(pydf10(sql))"""Pandas中有Series和DataFrame两种重要的数据结构。 Series:是一个定长的字典序列。有两个基本属性:index,values DataFrame:类似于数据库表的一种数据结构。我们甚至可以像操作数据库表那样对DataFrame数据进行 连接,合并,查询等等 常用DataFrame进行数据清晰:用到的发方法有: - describe() 统计性描述 - drop_duplicates() 删除重复行 - rename(columns=...) 更名 - dropna() 删除具有空的行 - isnull() 判断空值 - fillna() 填充空值 - apply() 应用函数 - merge() 合并df - value_counts() 统计某列的各类型个数 - read_excel() to_excel() 读取和保存excel - set_index() 设置索引 - cut 分组"""

 

转载于:https://www.cnblogs.com/HugJun/p/11107297.html

你可能感兴趣的文章
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-3.在线教育站点需求分析和架构设计...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-4.后端项目分层分包及资源文件处理...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-2.快速搭建SpringBoot项目,采用IDEA...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-7.接口配置文件自动映射到属性和实体类配置...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-5.开源工具的优缺点选择和抽象方法的建议...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-1.整合Mybatis访问数据库和阿里巴巴数据源...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-4.动态Sql语句Mybaties SqlProvider...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-1.单机和分布式应用的登录检验讲解...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-3.登录检验JWT实战之封装通用方法...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-2.微信扫一扫功能开发前期准备...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-3.Vidoe相关接口完善和规范协议...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-3.微信Oauth2.0交互流程讲解...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-5.PageHelper分页插件使用
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-2.微服务下登录检验解决方案 JWT讲解...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-8.用户模块开发之保存微信用户信息...
查看>>
HDU 5353 Average
查看>>
进程和计划管理
查看>>