ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pandas模块与dataframe

2021-10-17 20:35:36  阅读:189  来源: 互联网

标签:模块 df 指定 dataframe sec pd 数据 pandas 读取


Series数据操作

res['a'] = 123

  

 

res.loc[1]

  

 

res[0] = 1

  

 

del res[0]

  

 

算术运算符

"""
add		加(add)
sub		减(substract)
div		除(divide)
mul		乘(multiple)
"""
sr1 = pd.Series([12,23,34], index=['c','a','d'])
sr3 = pd.Series([11,20,10,14], index=['d','c','a','b'])
sr1.add(sr3,fill_value=0)

  

 

DataFrame创建方式

表格型数据结构,相当于一个二维数组,含有一组有序的列也可以看作是由Series组成的共用一个索引的字典

第一种

res = pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]})

  

 

第二种

pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),
        'two':pd.Series([1,2,3],index=['b','a','c'])})

  

 

第三种

pd.DataFrame(np.array([[10,20],[30,40]]),index=['a','b'],columns=['c1','c2'])

  

 

更多

pd.DataFrame([np.arange(1,8),np.arange(11,18)])
s1 = pd.Series(np.arange(1,9,2))
s2 = pd.Series(np.arange(2,10,2))
s3 = pd.Series(np.arange(5,7),index=[1,2])
df5 = pd.DataFrame({'c1':s1,'c2':s2,'c3':s3})

  

以上创建方式都仅仅做一个了解即可,因为工作中dataframe的数据一般都是来自于读取外部文件数据,而不是自己手动去创建。

 

常见属性

1.index 行索引

2.columns 列索引

3.T 转置

4.values 值索引

5.describe 快速统计

 

DataFrame数据类型补充

在DataFrame中所有的字符类型数据在查看数据类型的时候都表示成object

 

读取外部数据

读取文本文件和.csv结尾的文件数据

pd.read_csv() 

  

读取excel表格文件数据

pd.read_excel()

  

读取MySQL表格数据

pd.read_sql()

  

读取页面上table标签内所有的数据

pd.read_html()

  

 

文本文件读取

pd.read_csv(filepath_or_buffer, sep=',', header='infer', names=None, usecols=None, skiprows=None, skipfooter=None, converters=None, encoding=None)

filepath_or_buffer

指定txt文件或csv文件所在的具体路径 

sep

指定原数据集中各字段之间的分隔符,默认为逗号”,”

 

header

是否需要将原数据集中的第一行作为表头,默认将第一行用作字段名称 ,如果原始数据没有表头需要将该参数设置为None

 

 

names

如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头

usecols

指定需要读取原数据集中的哪些变量名

skiprows

数据读取时,指定需要跳过原数据集开头的行数

有一些表格开头是有几行文字说明的,读取的时候应该跳过

skipfooter

数据读取时,指定需要跳过原数据集末尾的行数

converters

用于数据类型的转换(以字典的形式指定)

encoding

如果文件中含有中文,有时需要指定字符编码

 

 

excel表格读取

pd.read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, names=None,
na_values=None, thousands=None, convert_float=True)

pd.read_excel(r'data_test02.xlsx',
header = None,
names = ['ID','Product','Color','Size'],
converters = {'ID':str}
)

io

指定电子表格的具体路径

sheet—name

指定需要读取电子表格中的第几个Sheet,既可以传递整数也可以传递具体的Sheet名称

header

是否需要将数据集的第一行用作表头,默认为是需要的

skiprows

读取数据时,指定跳过的开始行数

skip_footer

读取数据时,指定跳过的末尾行数

index_col

指定哪些列用作数据框的行索引(标签)

na_values

指定原始数据中哪些特殊值代表了缺失值

thousands

指定原始数据集中的千分位符

convert_float

默认将所有的数值型字段转换为浮点型字段

converters

通过字典的形式,指定某些列需要转换的形式

  

 

数据库数据读取

# 在anaconda环境下直接安装
# pymysql模块
import pymysql
conn = pymysql.connect(host,port,user,password, database, charset)
# 利用pymysql创建好链接MySQL的链接之后即可通过该链接操作MySQL
pd.read_sql('select * from user', con = conn)
conn.close()  # 关闭链接

  

host

指定需要访问的MySQL服务器

port

指定访问MySQL数据库的端口号 charset:指定读取MySQL数据库的字符集,如果数据库表中含有中文,一般可以尝试将该参数设置为 “utf8”或“gbk”

user

指定访问MySQL数据库的用户名

password

指定访问MySQL数据库的密码

database

指定访问MySQL数据库的具体库名

 

网页表格数据读取

pd.read_html(r'https://baike.baidu.com/item/NBA%E6%80%BB%E5%86%A0%E5%86%9B/2173192?fr=aladdin')[0]

  

 

 

 

数据概览

查看行

df.columns

  

 

查看列

df.index 

  

 

 

 

行列

df.shape

  

 

数据类型

df.dtypes

  

 

取头部多条数据

df.head(2)

  

 

取尾部多条数据

df.tail(3)

  

 

行列操作

获取指定列对应的数据

df['列字段名词']
df.rename(column={'旧列名称':'新列名称'})

  

 

创建新的列

df['新列名称']=df.列名称/(df.列名称1+df.列名称2)

  

自定义位置

df.insert(3,'新列名称',新数据)

  

 

添加行

df3 = df1.append(df2)

  

数据筛选

获取指定列数据

df['列名']  # 单列数据
df[['列名1','列名2',...]]  # 多列数据

  

 

 

获取指定行数据

sec_buildings.loc[sec_buildings["region"] == '浦东']

sec_buildings.loc[(sec_buildings["region"] == '浦东') & (sec_buildings['size'] > 150),]

sec_buildings.loc[(sec_buildings["region"] == '浦东') & (sec_buildings['size'] > 150),['name','tot_amt','price_unit']]

  

 

数据处理

sec_car = pd.read_csv(r'sec_cars.csv')
sec_car.head()
sec_car.dtypes
sec_car.Boarding_time = pd.to_datetime(sec_car.Boarding_time, format = '%Y年%m月')


sec_car.New_price = sec_car.New_price.str[:-1].astype(float)

  

 

标签:模块,df,指定,dataframe,sec,pd,数据,pandas,读取
来源: https://www.cnblogs.com/wddwyw-jyb/p/15417977.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有