先学了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︱模块导入与查看、数据读写出入、数据查看函数、数据类型、遍历文件的更多相关文章

  1. python学习日记(模块导入)

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...

  2. python基础之import模块导入和包的调用

    模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...

  3. Python开发基础-Day16import模块导入和包的调用

    模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. ...

  4. python - 路径处理 和 模块导入

    # -*- coding:utf-8 -*- '''@project: jiaxy@author: Jimmy@file: study_模块导入.py@ide: PyCharm Community E ...

  5. python中如何添加模块导入路径?

    python中自定义模块导入路径的方式主要有以下3种: (1)使用sys.path.append() 随着程序执行,会动态地添加模块导入的路径,但是程序执行结束后就会立即失效(临时性的) import ...

  6. Python 学习之urllib模块---用于发送网络请求,获取数据(5)

    查询城市天气最后一节 需要导入上一节的结果city10.py #!/usr/bin/python# -*- coding: UTF-8 -*-import urllib.requestfrom  ci ...

  7. Python 学习之urllib模块---用于发送网络请求,获取数据(4)

    承接将查询城市编码的结果保存到文件中,以字典的形式保存,目的是为了在查询某个城市的天气的时候,能够通过输入的城市名称,找到对应的城市编码.所以此结果字典的数据结构,就是city={城市名称:城市编码} ...

  8. Python 学习之urllib模块---用于发送网络请求,获取数据

    1.urllib urllib是Python标准库的一部分,包含urllib.request,urllib.error,urllib.parse,urlli.robotparser四个子模块. (1) ...

  9. python 的两个模块xlwt,xlrd,写入和读取Excel数据

    http://www.cnblogs.com/fireme/p/3887284.html 这上面写的很全,不过我只需要简单的读和写的操作就ok了,下面是我写的读和写入Excel操作 读取Excel数据 ...

随机推荐

  1. Asp.net Core 入门实战 2.请求流程

    Asp.Net Core 是开源,跨平台,模块化,快速而简单的Web框架. Asp.net Core官网的一个源码合集,方便一次性Clone,喜欢的(Star),本系列持续更新,也可以通过我的网站访问 ...

  2. linux下网卡相关查看设置

    查整机硬件信息命令dmesg 查看网卡设备相关dmesg | grep eth 查看网卡eth0信息dmesg | grep eth0 使用ethtool命令查看指定网卡信息ethtool eth0 ...

  3. xBIM 基本的模型操作

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  4. web.xml组件加载顺序

    在配置项目组件的过程中, 了解Tomcat加载组件顺序很有必要. 例如某些框架如Quartz的集群功能需要数据库的支持, 数据库的加载肯定要在框架组件加载之前. 经过查阅和Debug发现, web.x ...

  5. BZOJ 3028: 食物 [生成函数 隔板法 | 广义二项式定理]

    3028: 食物 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 497  Solved: 331[Submit][Status][Discuss] De ...

  6. new function

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. js中sum(2,3,4)和sum(2)(3)(4)都返回9并要求扩展性

    网上有很多关于sum(1)(2)(3),sum(1,2,3)之类的面试题要求输出相同的结果6并要求可以满足扩展,即有多个参数时也能符合题设的要求,所以自己写了部分例子可以大概满足这些面试题的要求 &l ...

  8. qt实现一个简单的计算器

    1.计算器的界面如下图所示 dalog.cpp #include "dialog.h" #include "ui_dialog.h" #include<Q ...

  9. LeetCode - 661. Image Smoother

    Given a 2D integer matrix M representing the gray scale of an image, you need to design a smoother t ...

  10. mysql 修改默认字符集为utf8

    MySQL 5.5, all you need is: [mysqld] character_set_client=utf8 character_set_server=utf8 collation_s ...