先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python。最好就是一句python,对应写一句R。
pandas中有类似R中的read.table的功能,而且很像。
————————————————————————————————————————————————————
一、数据类型
(来源:Python 变量类型)
Python有五个标准的数据类型:
- Numbers(数字)
- String(字符串)
- List(列表) 使用:[] list()
- Tuple(元组) 使用:() tuple()
- Dictionary(字典) 使用:{ } dict()
其中pandas和numpy中的数组格式 以及Series DataFrame都是基于此之上而得到的。其中比R要多:Tuple、Dictionary两种类型。
1、数字格式 int() float() long() complex()
Python支持四种不同的数字类型:
- int(有符号整型)
- long(长整型[也可以代表八进制和十六进制])
- float(浮点型)
- complex(复数)
一些数值类型的实例:
int | long | float | complex |
---|---|---|---|
10 | 51924361L | 0.0 | 3.14j |
100 | -0x19323L | 15.20 | 45.j |
-786 | 0122L | -21.9 | 9.322e-36j |
080 | 0xDEFABCECBDAECBFBAEl | 32.3+e18 | .876j |
-0490 | 535633629843L | -90. | -.6545+0J |
-0x260 | -052318172735L | -32.54e100 | 3e+26J |
0x69 | -4721885298529L | 70.2-E12 | 4.53e-7j |
- 长整型也可以使用小写"L",但是还是建议您使用大写"L",避免与数字"1"混淆。Python使用"L"来显示长整型。
- Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
2、字符串 str()
字符串或串(String)是由数字、字母、下划线组成的一串字符。
可参考:
一句python,一句R︱python中的字符串操作、中文乱码
3、列表型 [] =R=c()向量
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。
list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john']
4、元组——()/ tuple() =R= 固定的c()
元组是另一个数据类型,类似于List(列表)。
元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
以下是元组无效的,因为元组是不允许更新的。而列表是允许更新的: #!/usr/bin/python # -*- coding: UTF-8 -*- tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 ) list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tuple[2] = 1000 # 元组中是非法应用 list[2] = 1000 # 列表中是合法应用
相当于固定的c()
5、Python元字典 { } =R= list()
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
生成方式一:用在函数、for循环中
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
但是dict有一个好处,就是不仅可以list[1] 还可以list[strings],其中可以装下字符。
生成方式二:{}
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
输出方式:
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。
函数 | 描述 |
---|---|
int(x [,base]) |
将x转换为一个整数 |
long(x [,base] ) |
将x转换为一个长整数 |
float(x) |
将x转换到一个浮点数 |
complex(real [,imag]) |
创建一个复数 |
str(x) |
将对象 x 转换为字符串 |
repr(x) |
将对象 x 转换为表达式字符串 |
eval(str) |
用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) |
将序列 s 转换为一个元组 |
list(s) |
将序列 s 转换为一个列表 |
set(s) |
转换为可变集合 |
dict(d) |
创建一个字典。d 必须是一个序列 (key,value)元组。 |
frozenset(s) |
转换为不可变集合 |
chr(x) |
将一个整数转换为一个字符 |
unichr(x) |
将一个整数转换为Unicode字符 |
ord(x) |
将一个字符转换为它的整数值 |
hex(x) |
将一个整数转换为一个十六进制字符串 |
oct(x) |
将一个整数转换为一个八进制字符串 |
延伸
一种特殊的,字典的生成方式:
dict(dim=[1, 3, 227, 227])
————————————————————————————————————————————————————
二、模组、模块导入与复查
下载模块是一个麻烦的事情,一般用pip来执行,但是貌似每次下载都是一堆麻烦提示,于是转而用pycharm,很方面,傻瓜版.
一般模块就像R中的函数包,需要先调用
library(packages)=import pandas as pd
查看模块是否载入,一般import pandas,如果该包下载就不会用任何提示,如果没有加载成功,就会报错:
ImportError: No module named da
查看已有的加载包
help("modules") #查看安装包
按照R语言中曾经存在的问题:
1、如何取消模块的加载?
2、模块的位置是在哪?
3、模块的信息如何调用出来?就像R中的介绍一样,有没有比较详细的说明?
————————————————————————————————————————
三、数据读入、写出
1、python的read_csv
#数据导入 df = pd.read_csv('./cpu.csv',header=0) #中文encoding = 'gbk'
约等于R中的read.csv('./cpu.csv',header=T,encoding= UTF-8)
pd.read_csv("C:\\Users\\long\\Desktop\\ex2.csv",header=None,names=["a","b","c","e","message"],index_col=["message","a"])其中:header=None,就代表没有行名称,names代表另外命名行名称,index_col代表列。
其中读入数据的时候,不要出现中文,不然读不进去。
会出现以下的错误:
IOError: File C:\Users\long\Desktop\ch06\ex2.csv does not exist
如果出现中文,中文导入、导出都需要加上:
df = pd.read_csv("001.csv",encoding="gbk") dataname.to_csv("001.csv",encoding="gbk")
2、python的to_csv
to_csv=write.csv
#数据导出 df.to_csv('uk_rain.csv') #write.csv(df,"uk_rain.csv")
约等于R中的write.csv(df,"uk_rain.csv"),其中df是数据集的名称,跟前面的read_csv不太一样。
更一般的表现形式:
pd.read_table("./marks.csv", sep=",")
3、txt文件导入——np.loadtxt
用numpy中的一个函数可以实现txt文件的导入。
np.loadtxt("/caffe/examples/lmdb_test/train/synset.txt", str, delimiter='\t')
————————————————————————————————————————————————————
四、数据查看——行列名、查看
R中常有的两种方式——$ []:
data$colnames
data["colnames",]
函数使用办法都是:sum(data)
python中通过 . 传导式的:
data.sum
1、数据查看
查看数据的前5个,后5个。
data.head(5)
data.tail(5)
在R中为head(data)/tail(data)
2、数据类型
type(data)
3、列数量、行数量 len(R中的length)
len(data) #行数
len(data.T) #列数
其中data.T是数据转置,就可以知道数据的行数、列数。
————————————————————————————————————————
延伸一:遍历文件方法
笔者作为小白在遍历文件的时候,看到几种办法挺好的:os.listdir 和 os.walk
os.listdir返回的是该文件夹下的所有文件名称; os.walk可以返回父文件夹路径+文件夹下路径,貌似比较给力。
网上有帮他们打包成函数的博客:Python遍历目录的4种方法实例介绍
#!/usr/bin/python import os from glob import glob def printSeparator(func): def deco(path): print("call method %s, result is:" % func.__name__) print("-" * 40) func(path) print("=" * 40) return deco @printSeparator def traverseDirByShell(path): for f in os.popen('ls ' + path): print f.strip() @printSeparator def traverseDirByGlob(path): path = os.path.expanduser(path) for f in glob(path + '/*'): print f.strip() @printSeparator def traverseDirByListdir(path): path = os.path.expanduser(path) for f in os.listdir(path): print f.strip() @printSeparator def traverseDirByOSWalk(path): path = os.path.expanduser(path) for (dirname, subdir, subfile) in os.walk(path): #print('dirname is %s, subdir is %s, subfile is %s' % (dirname, subdir, subfile)) print('[' + dirname + ']') for f in subfile: print(os.path.join(dirname, f)) if __name__ == '__main__': path = r'~/src/py' traverseDirByGlob(path) traverseDirByGlob(path) traverseDirByListdir(path) traverseDirByOSWalk(path)
1、traverseDirByGlob、traverseDirByOSWalk两种函数可以拿到带全部路径的文件,类似:
/data/trainlmdb/val/test_female/image_00009.jpg
2、traverseDirByListdir(path)可以拿到里面的文件名:
image_00009.jpg
当然这个函数里面是print出来的。基于笔者的小白级写函数方法,笔者改进:
def traverseDirByGlob(path): path = os.path.expanduser(path) list={} i=0 for f in glob(path + '/*'): list[i]=f.strip() i=i+1 return list
就可以跟其他的def函数一样return出来。
一句python,一句R︱模块导入与查看、数据读写出入、数据查看函数、数据类型、遍历文件的更多相关文章
-
python学习日记(模块导入)
什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...
-
python基础之import模块导入和包的调用
模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...
-
Python开发基础-Day16import模块导入和包的调用
模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...
-
python - 路径处理 和 模块导入
# -*- coding:utf-8 -*- '''@project: jiaxy@author: Jimmy@file: study_模块导入.py@ide: PyCharm Community E ...
-
python中如何添加模块导入路径?
python中自定义模块导入路径的方式主要有以下3种: (1)使用sys.path.append() 随着程序执行,会动态地添加模块导入的路径,但是程序执行结束后就会立即失效(临时性的) import ...
-
Python 学习之urllib模块---用于发送网络请求,获取数据(5)
查询城市天气最后一节 需要导入上一节的结果city10.py #!/usr/bin/python# -*- coding: UTF-8 -*-import urllib.requestfrom ci ...
-
Python 学习之urllib模块---用于发送网络请求,获取数据(4)
承接将查询城市编码的结果保存到文件中,以字典的形式保存,目的是为了在查询某个城市的天气的时候,能够通过输入的城市名称,找到对应的城市编码.所以此结果字典的数据结构,就是city={城市名称:城市编码} ...
-
Python 学习之urllib模块---用于发送网络请求,获取数据
1.urllib urllib是Python标准库的一部分,包含urllib.request,urllib.error,urllib.parse,urlli.robotparser四个子模块. (1) ...
-
python 的两个模块xlwt,xlrd,写入和读取Excel数据
http://www.cnblogs.com/fireme/p/3887284.html 这上面写的很全,不过我只需要简单的读和写的操作就ok了,下面是我写的读和写入Excel操作 读取Excel数据 ...
随机推荐
-
(原创)古典主义——平凡之美 佳作欣赏(摄影,欣赏)
文中图片摘自腾讯文化网:www.cal.qq.com 1.Abstract 生活本就是平淡的,如同真理一般寂静.平时生活中不经意的瞬间,也有它本来的美丽.下面一组图是上上个世纪到上个世纪末一个 ...
-
IE打开报错,提示该内存不能为read的解决办法!
由于最近我遇到过一次浏览器打不开的情况,出错的错误提示为 浏览器错误:“0x5ddfddac”指令引用的“0x00000020”内存,该内存不能为read经过杀毒及IE修复均不能解决!(没试过360急 ...
-
Java异常(1)
一.要达到的效果 如果出现错误而是某些操作没有完成,程序应该: (1)返回到一种安全状态,并能够让用户执行一些其他的命令. (2)允许用户保存所有操作的结果,并以适当的方式终止程序. 异常处理的任 ...
-
adt的问题An internal error has occurred. After scene creation, #init() must be called
这个问题困扰了我好久,我也尝试去百度.google无济于事啊,让我寝食难安,太难受了,我把它贴出来,希望后人不绕弯子... 解决办法: 即可,解决这一个问题,现在酣畅淋漓,挥洒自如的capy代码了
-
UWP 手绘视频创作工具技术分享系列 - 手绘视频与视频的结合
本篇作为技术分享系列的第三篇,详细讲一下手绘视频中结合视频的处理方式. 随着近几年短视频和直播行业的兴起,视频成为了人们表达情绪和交流的一种重要方式,人们对于视频的创作.编辑和分享有了更多的需求.而视 ...
-
使用Eclipse创建动态的web工程
使用Eclipse创建动态的web工程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.修改工作区的编码 1>.点击Window选择Preferences 2>.将默 ...
-
PAT Basic 1032
1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 1 ...
-
B+树,B树,聚集索引,非聚集索引
简介: B+树中只有叶子节点会带有指向记录的指针,而B树则所有节点都带有 B+树索引可以分为聚集索引和非聚集索引 mysql使用B+树,其中Myisam是非聚集索引,innoDB是聚集索引 聚簇索引索 ...
-
基于链路的OSPFMD5口令认证
实验要求:掌握基于链路的OSPFMD5口令认证 拓扑如下: 配置如下: R1enable configure terminal interface s0/0/0ip address 192.168.1 ...
-
倒数第N个字符串
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增.例如当 L 为 3 时,序列为 { aaa, aab, aac, . ...