首页 > 编程语言 >python中的pandas小试

python中的pandas小试

时间:2023-04-12 13:02:41浏览次数:38  
标签:python Series two DataFrame 索引 小试 pandas Out


在实习的项目中,得到宽表后的后续工作是用R语言写的,包括数据探索,数据清洗,建模,模型分析。因为之前用过python,写过简单爬虫,就想着自己试着将R语言的脚本写成python,或许对于未来有帮组、

然而,在pyhon3.5连接teradata的问题上一直搞不通、、、

所以,只能先学一下pandas之类的基础了,本来想法是直接将R语言改成python,简单粗暴的方法也是最有效的做法。

一、pandas包的常用数据类型:Series和DataFrame

其实,Series和DataFrame分别对应的是R语言中的向量和数据框data.frame,连名字都一样。我个人觉得没多大的差别,只是听说python的DataFrame比R的dataframe更强大,慢慢研究吧。

我觉得,Series和DataFrame比起R语言中的向量和数据框,只是丰富了行的功能,也就是索引值。在R语言中,数据框就更类似于数据库中的表,更关注的是列,也就是属性。数据库中筛选列用select,筛选行用where。

1、Series:向量

python的常用数据类型,list,tuple,dictionary,pandas包中的Series可以接收这三者的值,并将其转换成向量,list和tuple是没有索引的(index),dictionary是默认将key当做索引,而values当做值。

①接收一个tuple:

>ser1=Series(('a','b','c'))
>ser1
Out[173]: 
0    a
1    b
2    c
dtype: object

②接收一个list:

>ser2=Series(['m','n','q'])
>ser2
Out[175]: 
0    m
1    n
2    q
dtype: object

③接收一个dictionary:

>ser3=Series({'a':[1,2,3],'b':[1,5,6]})
>ser3
Out[177]: 
a    [1, 2, 3]
b    [1, 5, 6]
dtype: object

>ser3.index
Out[178]: Index(['a', 'b'], dtype='object')

>ser3.values
Out[179]: array([[1, 2, 3], [1, 5, 6]], dtype=object)

>ser3.values[1]
Out[180]: [1, 5, 6]

④可以指定索引值,如果没有指定Series的索引,则自动生成从0开始的索引值。

>ser4=Series([2,3,4,5,6],index=['a','b','c','d','e'])

>ser4
Out[184]: 
a    2
b    3
c    4
d    5
e    6
dtype: int64

如果索引值不足,则提示错误,超出也会提示错误。只能一对一、、、

很明显可以通过索引值来得到values的值,这与R语言向量一样。

>ser4['c']
Out[190]: 4

⑤两个Series的合并运算,类似SQL的连接,R语言中的marge()。

>ser
Out[192]: 
ohio      3500
oregon    1600
texas     7100
utah       500
dtype: int64

>ser2
Out[194]: 
ohio          3500
oregon        1600
texas         7100
california     400

>ser+ser2
Out[195]: 
california        NaN
ohio           7000.0
oregon         3200.0
texas         14200.0
utah              NaN

Series就这些东西,太简单了,去R语言了解一下向量的用法,基本上就可以懂的差不多。

不同的是,Series是python的包,故操作python中的数据类型,有意思!

 

2、DataFrame 数据框,

Series是一个带索引的一列,但是DataFrame是一个带索引的多列,多了很多方法。

①DataFrame同样可以接受python自带的数据类型list,dictionary,但是接收不了tuple,最多只能接收两个list。

>pd=DataFrame({'a':[1,2,3],'b':[3,5,6],'c':[2,6,8]})
>pd
Out[206]: 
   a  b  c
0  1  3  2
1  2  5  6
2  3  6  8

或者:

>dic={'a':[1,2,3],'b':[3,5,6],'c':[2,6,8]}

>pd2=DataFrame(dic,index=['one','two','three'])

>pd2
Out[216]: 
           a  b  c
one    1  3  2
two     2  5  6
three  3  6  8

很有意思的是,DataFrame可以接收一个嵌套的dictionary字典,外层keys默认是列名,内层keys默认是行名,也就是索引index,列子如下:

>pd3=DataFrame({'a':{2001:2.4,2002:2.5},'b':{2000:2.3,2001:2.7,2002:3.5},'c':{2001:4.8,2002:3.9}})
>pd3
Out[225]: 
          a        b       c
2000  NaN  2.3  NaN
2001  2.4  2.7  4.8
2002  2.5  3.5  3.9

DataFrame是一个列的数据集合,其引用列的方式为:

>pd2['a']
Out[219]: 
one      1
two      2
three    3
Name: a, dtype: int64
或者:
>pd2.a
Out[220]: 
one      1
two      2
three    3
Name: a, dtype: int64

没了,也不知道哪里需要研究的,拿来就可以用,DataFrame的底层实现也不用去研究,python在数据处理中只当做一个工具,至于DataFrame.ix属性的使用, 下面再补充吧。

 

3、索引index

①reindex:重新排列索引,如果根据重新排列的索引找不到原来值则默认是NaN值;

>pd2
Out[237]: 
       a  b  c
one    1  3  2
two    2  5  6
three  3  6  8

>pd2.reindex(index=['three','two','one'])
Out[239]: 
       a  b  c
three  3  6  8
two    2  5  6
one    1  3  2

对列进行重新索引为:

>pd2.reindex(columns=['b','c','a'])
Out[240]: 
       b  c  a
one    3  2  1
two    5  6  2
three  6  8  3

 

4、drop()函数

与reindex()一样,默认也是对行进行操作,

df.drop([’one','two'],axis=0):删除df中索引名index是'one'和'two'的两行

df.drop(['a','b'],axis=1):删除df中列名是’a'和‘b’的两列

 

5、pandas专门引用了一个ix属性,用来按照类似numpy包方法引用数据

>pd2
Out[257]: 
       a  b  c
one    1  3  2
two    2  5  6
three  3  6  8

>pd2.ix['two',['a','b']]
Out[258]: 
a    2
b    5
Name: two, dtype: int64

注释:pd2.ix是属性值,用引用list的方式引用它,中间用逗号隔开,前后分别是行列,这个跟R语言也一样。

R语言中,如果选择第1到第3号,和全部的列用df[1:3,],而在python中用df[1:3,:],冒号不能省略!

有了DataFrame.ix后,数据框的引用非常的方便。

 

 

 

 

 

 

 

 

 

 

 

 

标签:python,Series,two,DataFrame,索引,小试,pandas,Out
From: https://blog.51cto.com/u_16057845/6185492

相关文章

  • Python script get date and time All In One
    PythonscriptgetdateandtimeAllInOnePythonshellscriptprintcurrentdatetimetologfile#✅......
  • python - html转pdf
    1.安装pdfkitpip3installpdfkit2.安装wkhtmltopdf下载wkhtmltopdf安装包https://wkhtmltopdf.org/downloads.html安装后在系统Path添加wkhtmltopdf的bin路径3.简单使用将本地html转pdfimportpdfkit#如果html里引用了外部的文件,则需要添加以下参数wkhtmltopdf_o......
  • windows环境下python3安装Crypto
    pycrypto、pycrytodome和crypto是一个东西,crypto在python上面的名字是pycrypto,它是一个第三方库,但是已经停止更新三年了,所以不建议安装这个库;这个时候pycryptodome就来了,它是pycrypto的延伸版本,用法和pycrypto是一模一样的;所以,我现在告诉大家一种解决方法--直接安装:pipinstallpy......
  • Python中tqdm模块进度条
    tqdm模块简单介绍tqdm是一个可以显示Python进度条的模块,可通过pip在终端安装pipinstalltqdmtqdm.tqdmfromtqdmimporttqdmforiintqdm(range(1,5)):print(i)或传入字符串list:fromtqdmimporttqdmforiintqdm(["a","b","c"]):print(i)tqdm......
  • Python爬虫之循环爬取多个网页
    之前的文中介绍了如何获取给定网址的网页信息,并解析其中的内容。本篇将更进一步,根据给定网址获取并解析给定网址及其相关联网址中的内容。要实现这些功能,我们需要解决以下问题:1、如何持续不断的获取url,并读取相关内容。2、如何判断网址是否已经读取过。文中用到的代码均已上传......
  • linux安装两个python版本
    1.下载python3安装包wgethttps://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz2.解压python的tgz压缩包文件tar-xzvfPython-3.7.2.tgz3.进入解压的文件cdPython-3.7.24.在python文件路径下编译pythonprefix=/usr/local/python37,指定python安装路径,这个路径......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-场景问题智能生成从0到1快速入门——官网推荐
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能多功能学习机从0到1快速入门——官网推荐
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能评论创建从0到1快速入门——官网推荐的48
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • Python Tkinter Frame
    PythonTkinterFrametkinter的Frame组件:这个组件是容器组件,用于在复杂布局中将其他的组件分组。所谓容器组件,就是可以收纳其它组件,可以做其它组件的父组件的组件。frame的属性:bg或background : frame组件的背景颜色bd或borderwidth : frame的边框宽度,默认值......