2019-04-17 20:56:38 m0_37738570 阅读数 1043
  • Python-数据

    Python数据库编程视频教程,数据库是MySQL,讲解Python链接MySQL数据库,并对数据库进行增删改查操作。

    10865 人正在学习 去看看 尹成

主要介绍python中导入csv格式数据的三种方法:
1.采用标准Python类库导入数据
2.采用Numpy导入数据
3.采用Pandas导入数据

数据导入

1.采用标准Python类库导入数据
Python提供了一个标准类库CSV,用来处理CSV文件。这个类库中的reader()函数用来读
入CSV文件

from csv import reader
import numpy as np 
#使用标准的Python类库导入csv数据
filename = 'pima_data.csv'
with open(filename,'rt') as raw_data:
	readers = reader(raw_data,delimiter=',')
	x = list(readers)
	data = np.array(x).astype('float')
	print(data.shape)

2.采用NumPy导入数据
也可以使用Numpy的loadtxt()函数导入数据。使用这个函数处理的数据没有文件头,并且所有的数据结构是一样的,也就是说,数据类型是一样的。代码如下:

from numpy import loadtxt
#使用NumPy导入csv数据
filename = 'pima_data.csv'
with open(filename,'rt') as raw_data:
	data = loadtxt(raw_data,delimiter=',')
	print(data.shape)

3.采用Pandas导入数据
通过Pandas来导入csv文件要使用pandas.read_csv()函数.这个函数的返回值是DataFrame,可以很方便的进行下一步处理。

from pandas import read_csv
#使用Pandas导入csv数据
filename = 'pima_data.csv'
names = ['preg','plas','pres','skin','test','mass','pedi','age','class']
data = read_csv(filename,names = names)
print(data.shape)

上面就是导入csv数据的三种方法,绝大多数时候应该是可以跑通的,我在例子中用的是
机器学习印第安人糖尿病的数据集,大家可以灵活自由更换,填写csv文件地址就可以了,感谢观看。

2018-12-05 22:36:07 weixin_38300566 阅读数 3918
  • Python-数据

    Python数据库编程视频教程,数据库是MySQL,讲解Python链接MySQL数据库,并对数据库进行增删改查操作。

    10865 人正在学习 去看看 尹成

在本部分中,学习将数据导入Python的多种方法:

(i)来自平面文件,如.txts和.csvs;
(ii)从原生到其他软件的文件,如Excel电子表格,Stata,SAS和MATLAB文件;
(iii)来自关系数据库,例如SQLite和PostgreSQL。

平面文件(flat file)是去除了所有特定应用(程序)格式的电子记录,从而使数据元素可以迁移到其他的应用上进行处理。这种去除电子数据格式的模式可以避免因为硬件和专有软件的过时而导致数据丢失。 平面文件是一种计算机文件,所有信息都在一个信号字符串中。

1、导入整个文本文件  

# Open a file: file
file = open('moby_dick.txt', 'r')

# Print it
print(file.read())

# Check whether file is closed
print(file.closed)

# Close file
file.close()

# Check whether file is closed
print(file.closed)

2、逐行导入文本文件

# Read & print the first 3 lines
with open('moby_dick.txt') as file:
    #print(file.read())
    print(file.readline())
    print(file.readline())
    print(file.readline())

CHAPTER 1. Loomings.

Call me Ishmael. Some years ago--never mind how long precisely--having

3、使用NumPy导入平面文件   

 np.loadtxt(file, delimiter=',')

# Import package
import numpy as np

# Assign filename to variable: file
file = 'digits.csv'

# Load file as array: digits
digits = np.loadtxt(file, delimiter=',')

# Print datatype of digits
print(type(digits))  # <class 'numpy.ndarray'>

# Select and reshape a row
im = digits[21, 1:]

im_sq = np.reshape(im, (28, 28))

# Plot reshaped data (matplotlib.pyplot already loaded as plt)
plt.imshow(im_sq, cmap='Greys', interpolation='nearest')
plt.show()

自定义NumPy导入

np.loadtxt(file, delimiter='\t', skiprows=1, usecols=[0,2])

delimiter:changes the delimiter that loadtxt() is expecting, for example, you can use ',' and '\t' for comma-delimited and tab-delimited respectively。

skiprows:需要忽略的行数(从文件开始处算起),或需要跳过的行号列表(从0开始)

usecols:获取希望保留的列的索引列表

我们要导入的.txt文件它有标题,且由字符串组成,是制表符分隔的。

由于标题,如果尝试使用np.loadtxt()按原样导入它,Python会抛出一个ValueError并告诉它无法将字符串转换为float。

有两种方法可以解决这个问题:首先,将数据类型参数dtype设置为str(对于字符串)。

或者,使用skiprows参数跳过第一行。使用skiprows=1,去掉标题行

# Import numpy
import numpy as np

# Assign the filename: file
file = 'digits_header.txt'

# Load the data: data
data = np.loadtxt(file, delimiter='\t', skiprows=1, usecols=[0,2])

# Print data
print(data)

[[ 1.  0.]
     [ 0.  0.]
     [ 1.  0.]
     [ 2.  1.]]

np.loadtxt()输出为多维数组,可以按照数组切片等方式取数。

# Assign filename: file
file = 'seaslug.txt'

# Import file: data
data = np.loadtxt(file, delimiter='\t', dtype=str)

# Print the  data
print(data)

# Import data as floats and skip the first row: data_float
data_float = np.loadtxt(file, delimiter='\t', dtype=float, skiprows=1)

# Print the  data_float
print(data_float)

[["b'Time'" "b'Percent'"]
 ["b'99'" "b'0.067'"]
 ["b'99'" "b'0.133'"]
......
 ["b'5'" "b'0.214'"]
 ["b'5'" "b'0.4'"]]

[[  9.90000000e+01   6.70000000e-02]
 [  9.90000000e+01   1.33000000e-01]

......

 [  5.00000000e+00   2.14000000e-01]
 [  5.00000000e+00   4.00000000e-01]]

使用混合数据类型
 大多数情况下,需要导入在不同列中具有不同数据类型的数据集; 例如,一列可能包含字符串和另一列包含浮点数。 函数np.loadtxt()没法解决。 还有另一个函数,np.genfromtxt(),它可以处理这样的结构。 如果我们将dtype = None传递给它,它将确定每列应该是什么类型。np.recfromcsv()类似。

data = np.genfromtxt('titanic.csv', delimiter=',', names=True, dtype=None)

这里,第一个参数是文件名,第二个参数指定分隔符,第三个参数names告诉我们有一个标题。 由于数据类型不同,因此数据是一个称为结构化数组的对象。 因为numpy数组必须包含所有相同类型的元素,所以结构化数组通过作为一维数组来解决这个问题,其中数组的每个元素都是导入的平面文件的一行。

In [2]: np.shape(data)
Out[2]: (10,)

In [5]: print(data)
[(1, 0, 3, b'male', 22.0, 1, 0, b'A/5 21171', 7.25, b'', b'S')
 (2, 1, 1, b'female', 38.0, 1, 0, b'PC 17599', 71.2833, b'C85', b'C')
 (3, 1, 3, b'female', 26.0, 0, 0, b'STON/O2. 3101282', 7.925, b'', b'S')
 (4, 1, 1, b'female', 35.0, 1, 0, b'113803', 53.1, b'C123', b'S')
 (5, 0, 3, b'male', 35.0, 0, 0, b'373450', 8.05, b'', b'S')
 (6, 0, 3, b'male', nan, 0, 0, b'330877', 8.4583, b'', b'Q')
 (7, 0, 1, b'male', 54.0, 0, 0, b'17463', 51.8625, b'E46', b'S')
 (8, 0, 3, b'male', 2.0, 3, 1, b'349909', 21.075, b'', b'S')
 (9, 1, 3, b'female', 27.0, 0, 2, b'347742', 11.1333, b'', b'S')
 (10, 1, 2, b'female', 14.0, 1, 0, b'237736', 30.0708, b'', b'C')]

# Assign the filename: file
file = 'titanic.csv'

# Import file using np.recfromcsv: d
d = np.recfromcsv(file,delimiter=',',names=True,dtype=None)

# Print out first three entries of d
print(d[:3])

[(1, 0, 3, b'male', 22.0, 1, 0, b'A/5 21171', 7.25, b'', b'S')
 (2, 1, 1, b'female', 38.0, 1, 0, b'PC 17599', 71.2833, b'C85', b'C')
 (3, 1, 3, b'female', 26.0, 0, 0, b'STON/O2. 3101282', 7.925, b'', b'S')]

4、使用pandas将平面文件导入为DataFrames

可以将包含具有不同数据类型的列的平面文件导入为numpy数组。 但是,pandas中的DataFrame对象是一个更适合存储此类数据的结构,幸运的是,我们可以使用pandas函数read_csv()和read_table()轻松地将混合数据类型的文件导入为DataFrame。

# Import pandas as pd
import pandas as pd

# Assign the filename: file
file = 'titanic.csv'

# Read the file into a DataFrame: df
df = pd.read_csv(file)

# View the head of the DataFrame
print(df.head())

      PassengerId  Survived  Pclass     Sex      Age      SibSp     Parch  Ticket                              Fare         Cabin     Embarked
0               1           0              3              male     22.0      1             0           A/5 21171                     7.2500       NaN        S  
1               2           1              1              female  38.0      1             0           PC 17599                     71.2833     C85        C
2               3           1              3              female  26.0      0             0           STON/O2. 3101282    7.9250        NaN        S
3               4           1              1              female  35.0      1             0           113803                         53.1000      C123        S
4               5           0              3              male     35.0      0              0           373450                         8.0500        NaN        S             
 自定义pandas导入

data = pd.read_csv(file, sep='\t', comment='#', na_values='Nothing')

comment:表示在文件中出现注释的字符,在本例中为“#”。

na_values:将字符串列表识别为NA / NaN,在本例中为字符串'Nothing'

 

2019-12-30 20:54:54 ayouleyang 阅读数 37
  • Python-数据

    Python数据库编程视频教程,数据库是MySQL,讲解Python链接MySQL数据库,并对数据库进行增删改查操作。

    10865 人正在学习 去看看 尹成

1、导入csv数据

from pandas import read_csv
filename = "F:\\数据分析\\数据分析3\\章节4数据处理\\4\\4.1\\a.csv"
df = read_csv(filename,encoding="UTF-8")
print (df)

2、导入文本数据

使用read_table函数导入普通文本文件

  • read_table(filename,names=[列名1,列名2,…],sep="",encoding,…)
from pandas import read_table
filename = "F:\\数据分析\\数据分析3\\章节4数据处理\\4\\4.1\\2.txt"
df = read_table(filename,names=["age","name"],sep=",",encoding="UTF-8")
print (df)
参数 注释
filename 文件的路径
names 列名,默认为文件中的第一行作为列名
sep 分隔符,默认为空,表示默认导入为一列
encoding 设置文件格式,在导入中文的时候需要设置为UTF-8
#运行结果

   age  name
0  23   KEN
1  32  John
2  25  JIMI
3  中文    英文

3、导入Excel文件

使用read_excel函数导入Excel文件

  • read_excel(filename,sheetname,header)
from pandas import read_excel
filename = "F:\\数据分析\\数据分析3\\章节4数据处理\\4\\4.1\\3.xls"
df = read_excel(filename,sheet_name="data",encoding="UTF-8")
print (df)
参数 注释
fileName 文件路径
sheetname Sheet的名字
names 列名,默认为文件中的第一行作为列名

4、保存数据

to_csv函数语法:

  • to_csv(filePath,sep=",",index=True,header=True)
from pandas import DataFrame
df = DataFrame({
    'age':[20,21,22,23],
    'name':['you','are','my','love']    
})
print (df)
filePath = "G:\\数据分析学习\\in_csv.csv"
df.to_csv(filePath,index=True,header=True)

运行结果
在这里插入图片描述

参数 注释
filePath 导出文件路径
sep 分隔符,默认为逗号(","),也就是以逗号分隔列
index 是否导出行序列,默认为True,也就是导出行序列号
header 是否导出列名,默认为True,也就是导出列名
2019-05-15 10:07:18 weixin_38378850 阅读数 96
  • Python-数据

    Python数据库编程视频教程,数据库是MySQL,讲解Python链接MySQL数据库,并对数据库进行增删改查操作。

    10865 人正在学习 去看看 尹成
原来的代码
x = pd.read_table('D:\我爱学习\数据挖掘与数据仓库\实验\OrdonezA_ADLs.txt', sep='\s+')

经过StackOverflow的查询发现需要增加参数engine='python'

x = pd.read_table('D:\我爱学习\数据挖掘与数据仓库\实验\OrdonezA_ADLs.txt', sep='\s+', engine='python')

使用Python导入数据集

博文 来自: wzj_123123

Python导入数据

阅读数 267

没有更多推荐了,返回首页