当前位置: 首页> 房产> 政策 > 徐州疫情最新消息今天_苏州网上注册公司网址_国内永久免费域名注册_最好用的搜索神器

徐州疫情最新消息今天_苏州网上注册公司网址_国内永久免费域名注册_最好用的搜索神器

时间:2025/7/13 16:37:45来源:https://blog.csdn.net/weixin_46513544/article/details/144309052 浏览次数:0次
徐州疫情最新消息今天_苏州网上注册公司网址_国内永久免费域名注册_最好用的搜索神器

一、基础

1.1   数据类型和新建文件

数据类型新建方法
csv 和 txtpd.to_csv
excelpd.to_excel
sqlpd.to_sql

       

import pandas as pd路径 = 'c:/Users/xx/song.csv'数据 = pd.DataFrame({'序号':[1,2,3],'姓名':['小米','小华','小名']})数据 = 数据.set_index('序号')数据.to_csv(路径)print('新建song.csv成功')

 1.2  读取txt和csv文件

    read_csv  默认逗号作为分隔符

   read_table 默认制表符作为分隔符 

import pandas as pd路径 = 'c:/Users/xx/读取文件.txt'读取数据 = pd.read_table(路径,sep=',')  #制表符  分隔符是逗号   读取数据 = pd.read_csv() print(读取数据)表格中既有逗号分隔又有制表符分隔 需要用到正则表达式  s+ (+)匹配1次或者无限次 重复在+号之前的数据
匹配空白字符(包括空格 换行符 制表符等,相当于\t \n \r \f \v)人造表头 通过header=None,names=['','','','',''] 实现import pandas as pd路径 = 'c:/Users/xx/读取文件.txt'读取文件 = pd.read_csv(路径,header=None,names=['性别','姓名','地址','入职日期'],index_col='入职日期',nrows=3)索引类列可以是index_col='入职日期'如果是多个索引可以是index-col=['','']nrows() 显示前几行 只有结果是前3行   print(3) 显示的来的结果只是展示了3行  都有的将txt文件转化为csv文件imprt pandas as pd数据= pd.read_csv('C:/Users/xx/读取文件.txt')数据.to_csv('C:/Users/xx/读取文件.csv')print(数据)
import pandas as pd路径 = 'c:/Users/xx/读取文件.txt'读取文件 = pd.read_csv(路径)# print(读取文件.head(3))  #显示几行数据# print(读取文件.shape)  查看几行几列# print(读取文件.columns)    显示列名# print(读取文件.index)     显示索引号# print(读取文件.dtypes)    每一列的数据类型
参数描述
sep分隔符或者正则表达式sep='\s+'
header列名的标号,默认0(第一行),如果没有列名应该为None
names列名,与header=None一起使用
index_col索引的列号或者列名,可以是一个单一的名字或者是数字,也可以是一个分层索引
encoding文本编码,例如utf-8
nrows从文件开头处读入的行数
skiprows从文件开始处,需要跳过的行数或者行号列表

1.3   mysql 连接数据库 

 

import pymysql连接对象 = pymysql.connect(host='localhost',user='root',password='123456',database='test')游标对象=连接对象.cursor()sql=''游标对象.execute(sql)游标对象.close()连接对象.commit()连接对象.close()

                pandas连接数据库

import pandas as pdimport pymysql连接对象 = pymysql.connect(host='localhost',user='root',password='123456',database='sys',charset='utf8')读取文件 = pd.read_sql("select * from  小类",con=连接对象)print(读取文件)

    1.4   pandas 读取与修改excel

import pandas as pd路径 = 'C:/Users/xx/song.xlsx'数据 = pd.read_excel(路径,header=None,names=['品牌','人数','地区'],index_col='品牌')print(数据)数据.to_excel(路径)

二、pandas数据类型

2.1 Series  DataFrame

DataFrame :二维数据,,整个表格,多行多列

df.index:索引列

df.colcumns:列名

Series:一维数据,一行或者一列

字典的形式import pandas as pd字典 = {'姓名':'松松','性别':'女','年龄':'20','地址':'某默默'}数据 = pd.Series(字典)# 数据 = pd.Series(['松松','女',20,'2020-1-1'],index=['a','b','c'])  #index=['',''] 指定索引# print(数据.index) #索引# print(数据.values)  #查看值 信息# print(数据.index)# print(数据['姓名'])  #一个key值# print(type(数据[['姓名','性别']]))  #多个key值import pandas as pd列表1 = ['姓名','年龄','性别','身高']列表2 = ['松松','20','女','168']数据 = pd.Series(列表2,index=列表1) #列表1作为索引print(数据)import  pandas as pd
路径 = 'C:/Users/xx/排序.xlsx'数据 = pd.read_excel(路径,header=None,names=['序号','品牌','人数','地区'],index_col='序号')# print(数据.sort_index())# print(数据.sort_values('品牌'))# print(数据.isnull())  判断为空print(数据.notnull())   # 所有不为空的为true,空的falseimport  pandas as pd路径 = 'C:/Users/xx/排序.xlsx'# 数据 = pd.read_excel(路径,header=None,names=['序号','品牌','人数','地区'],index_col='序号')数据 = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=['a','b','c'])print(数据['a'][0]) #显示a列0行print(数据.loc[0]['a'])  #loc根据行列进行查找 0行a类 columns的列名是 a b c 标签是名字print(数据.iloc[0][0])       #iloc根据行列的位置进行查询  位置查询print(数据[['a','b']])  # 查找指定类 a 列 b列import pandas as pd字典 = {'姓名':['松松','露露','乒乓'],'年龄':[20,30,50],'功夫':['健身','唱歌','跳舞']}数据 = pd.DataFrame(字典)print(数据)print(数据.dtypes) # 字段数据类型print(数据.columns) # 字段名print(数据.index) #索引print(数据['姓名']) # 查找姓名print(数据.loc[1])  #返回第一行数据print(数据.loc[1]['姓名']) #指定行和类  第一行的名字print(数据[['姓名','年龄']])   #返回两列数据print(数据.loc[0:3])     #返回多行loc 只要是行就是加loc或者iloc 前三行多个Series操作import pandas as pddata1 = pd.Series(['小王','小方','小黄'],index=[1,2,3],name='姓名')data2 = pd.Series(['男','男','男'],index=[1,2,3],name='性别')data3 = pd.Series([16,30,57],index=[1,2,4],name='年龄')# sheet = pd.DataFrame({data1.name:data1,data2:data2,data3:data3})sheet = pd.DataFrame([data1,data2,data3])print(sheet)

2.2 DataFrame 常用方法

import  pandas as pdname = {'姓名':['小李','小方','小黄'],'性别':['男','女','男'],'身高':['160','180','175'],'体重':['160','180','175']}data = pd.DataFrame(name)print(data)# print(data.head(1))  查找前几行# print(data.tail(1)) 查找后几行# print(data.values)  查找值# print(data.shape)  查找形状# print(data.fillna(0)) 空值填充为0# print(data.replace('小方','小红')) 替换把小方替换# print(data.isnull)  判读是否为空 空的地方为true# print(data.notnull)  判读是否不为空 不空的地方为true# print(data.dropna())     删除空值# print(data.unique())  查看唯一值# print(data.reset_index(drop=True))  索引会直接删除# print(data.reset_index(drop=False))# print(data.merge())   合并# print(data.concat())print(data.pivot_table) 用df座数据透视表

2.3 连接查询  

innerMerge 内连接

leftMerge   左连接

rightMerge 右连接

outMerge  全连接

import pandas as pdimport numpy as npdata1 = pd.DataFrame({'姓名':['小里','小凡','小名','小成','小放'],'time1':np.arange(5)})data2 = pd.DataFrame({'姓名':['小红','小张','小力','小成'],'time2':[1,2,3,4]})print(data1)print('*'*30)print(data2)# data3 = pd.merge(data1,data2,on='姓名',how='inner')  内连接# data3 = pd.merge(data1,data2,on='姓名',how='left')  左连接相当于vlokkup  如果表没有显示为空# data3 = pd.merge(data1,data2,on='姓名',how='right')# data3 = pd.merge(data1,data2,on='姓名',how='outer')  全外连接 相当于两张表的联合# data3 = pd.merge(data1,data2,on=['姓名',''])      需要多个字段,可以加中括号print(data3)字段 姓名连接索引import pandas as pd
data1 = pd.DataFrame({'姓名':['小值','小方','小里','小成'],'time':range(4)})data2 = pd.DataFrame({'数据':[10,20]},index=['小值','小方'])data3 = pd.merge(data1,data2,left_on='姓名',right_index=True)  姓名连接索引 right_index=Trueprint(data3)suffixesimport pandas as pd
data1 = pd.DataFrame({'姓名':['小值','小方','小里','小成'],'time':range(4)})data2 = pd.DataFrame({'数据':[10,20]},index=['小值','小方'])# data3 = pd.merge(data1,data2,left_on='姓名',right_index=True)  姓名连接索引 right_index=Trueprint(data3)suffix后缀如果表中遇有一列两个表是相同的名,但是值不同,合并的时候都想要保存下来,就可以用suffixes来给每个表的重复列名增加后缀pd.merge(data1,data2,on='',suffixes=['',''])

 2.4 Join 连接

import pandas as pdf = {'姓名1':['小值','小方','小凡','小李'],'年龄1':[15,35,53,23]}r = {'姓名2':['小空','小中','小各','小列'],'年龄2':[19,39,25,27]}l = pd.DataFrame(f)p = pd.DataFrame(r)print(l.join(p))  连接是横向连接 不同索引列合并一个DataFrame join默认左外连接how=left结果姓名1  年龄1 姓名2  年龄2
0  小值   15  小空   19
1  小方   35  小中   39
2  小凡   53  小各   25
3  小李   23  小列   27

2.5 Concat

concat(objs,axis=0,join='outer',join_axes=None,ignore_index=Fales,keys=None,levels=None,names=None,verify_integrity=False)

属性描述
objs合并的对象集合,可以是Series DataFrame
axis合并方法,axis=0 表示纵向 1表示横向
join默认outer并集,inner交集 只有这两种
join_axes默认False 忽略,是否忽略原index
keys为原始DataFrame添加一个键,默认无
ignore_index默认False忽略,是否忽略原index
import  pandas as pddata1 = pd.Series([0,1,2,3],index=['A','B','C','D'])data2 = pd.Series([4,5],index=['L','E'])# axis=1 连接data3 = pd.concat([data1,data2],axis=1)print(data3)
2.5.1 相同字段的收尾相连
frames =[df1,df2,df3]result = pd.conct(frams)要在相接的时候加上一个层次的Key来识别数据源来自那张表,可以增加Key参数result = pd.concat(Frames,keys=['x','y','z'])
  2.5.2横向表连接(行对齐)
1 axis当axis=1时,concat就是行对齐,然后将不同的列名称的两张表合并result = pd.concat([df1,df4],axis=1)2 join加上join 属性如果inner 得到的是两张表的交集如果是outer 得到的是并集result = pd.concat([df1,df4],axis=1,join='inner')3 join_axes如果有join_axes 的参数传入,可以指定根据那个轴来对齐数据例如根据df1表对齐,就会保留指定df1的轴,然后将df4的表与之拼接result = pd.concat([df1,df4],axis=1,join_axex=[df1.index])
2.5.3 append
append 是Series和DataFrame 的方法,使用它就是默认连着列进行凭借axis=0 列对齐result = df1.append(df2)
2.5.4 无视index的concat
如果两个表的index都没有实际含义,使用ingor_index参数,置为true合并的连个表就根据列字段对齐,然后合并,最后再重新整理一个新的index
      2.5.5 合并的同时增加区分数组的数据组
keys参数可以给合并后的表增加ke用区分不同表数据来源1 可以key参数实现result = pd.concat(frames,key=['x','y','z'])2 传入字典增加分组键pieces={'x':df1,'y':'df2','z':'df3'}  x y z即为Key值result = pd.concat(pieces)
2.5.6 在dataframe中加入新的行
append 方法可以将series和字典就能够的数据作为dataframe的新一行插入s2 = pd.Series(['X0','X1','X2'],index=['A','B','C'])result = pd.append(s2,ingore_index=True)
2.5.7 表格字段不同的表进行合22
如果遇到两张表的列字段不同,但是想要合并,其中无效的值用nan来表示,可使用ingore_index实现dics = [{'A':1,'B':2,'C':3},{'A':4,'B':9,'C':5,'X':0}]result = df1.append(dics,ingore_index=True)汇总concat 可以沿着一条轴将多个对象连接在一起merge 可以根据一个或者多个键将不同的DataFrame中的行连接起来join inner交集 outer并集
关键字:徐州疫情最新消息今天_苏州网上注册公司网址_国内永久免费域名注册_最好用的搜索神器

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: