python怎么读取数据库表每一行数据(python读取数据库数据,并保存

http://www.itjxue.com  2023-04-07 02:40  来源:未知  点击次数: 

python中如何将表中的数据做成一张表,然后再从中取出数据?

第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。

获取外部数据

python 支持从多种类型的数据导入。在开始使用 python 进行数据导入前需要先导入 pandas 库,为了方便起见,我们也同时导入 numpy 库。

1 import numpy as np

2 import pandas as pd

导入数据表

下面分别是从 excel 和 csv 格式文件导入数据并创建数据表的方法。代码是最简模式,里面有很多可选参数设置,例如列名称,索引列,数据格式等等。感兴趣的朋友可以参考 pandas 的

官方文档。

1 df=pd.DataFrame(pd.read_csv(‘name.csv’,header=1))

2 df=pd.DataFrame(pd.read_excel(‘name.xlsx’))

创建数据表

另一种方法是通过直接写入数据来生成数据表,excel 中直接在单元格中输入数据就可以,python 中通过下面的代码来实现。生成数据表的函数是 pandas 库中的 DateFrame 函数,数据表一共有 6 行数据,每行有 6 个字段。在数据中我们特意设置了一些 NA 值和有问题的字段,例如包含空格等。后面将在数据清洗步骤进行处理。后面我们将统一以 DataFrame 的简称 df 来命名数据表。

1 df = pd.DataFrame({‘id’:[1001,1002,1003,1004,1005,1006],

2 ‘date’:pd.date_range(‘20130102’, periods=6),

3 ‘city’:['Beijing ', ‘SH’, ’ guangzhou ', ‘Shenzhen’, ‘shanghai’, 'BEIJING '],

4 ‘age’:[23,44,54,32,34,32],

5 ‘category’:[‘100-A’,‘100-B’,‘110-A’,‘110-C’,‘210-A’,‘130-F’],

6 ‘price’:[1200,np.nan,2133,5433,np.nan,4432]},

7 columns =[‘id’,‘date’,‘city’,‘category’,‘age’,‘price’])

这是刚刚创建的数据表,我们没有设置索引列,price 字段中包含有 NA 值,city 字段中还包含了一些脏数据。

数据表检查

python 中处理的数据量通常会比较大,所以就需要我们对数据表进行检查。比如我们之前的文章中介绍的纽约出租车数据和 Citibike 的骑行数据,数据量都在千万级,我们无法一目了然的了解数据表的整体情况,必须要通过一些方法来获得数据表的关键信息。数据表检查的另一个目的是了解数据的概况,例如整个数据表的大小,所占空间,数据格式,是否有空值和重复项和具体的数据内容。为后面的清洗和预处理做好准备。

数据维度(行列)

Excel 中可以通过 CTRL 向下的光标键,和 CTRL 向右的光标键来查看行号和列号。Python 中使用 shape 函数来查看数据表的维度,也就是行数和列数,函数返回的结果(6,6)表示数据表有 6 行,6 列。下面是具体的代码。

1 #查看数据表的维度

2 df.shape

3 (6, 6)

数据表信息

使用 info 函数查看数据表的整体信息,这里返回的信息比较多,包括数据维度,列名称,数据格式和所占空间等信息。

1 #数据表信息

2 df.info()

4 class ‘pandas.core.frame.DataFrame’

5 RangeIndex: 6 entries, 0 to 5

6 Data columns (total 6 columns):

7 id 6 non-null int64

8 date 6 non-null datetime64[ns]

9 city 6 non-null object

10 category 6 non-null object

11 age 6 non-null int64

12 price 4 non-null float64

13 dtypes: datetime64ns, float64(1), int64(2), object(2)

14 memory usage: 368.0 bytes

查看数据格式

Excel 中通过选中单元格并查看开始菜单中的数值类型来判断数据的格式。Python 中使用 dtypes 函数来返回数据格式。

Dtypes 是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看。

1#查看数据表各列格式

2df.dtypes

3

4id int64

5date datetime64[ns]

6city object

7category object

8age int64

9price float64

10dtype: object

11

12#查看单列格式

13df[‘B’].dtype

14

15dtype(‘int64’)

查看空值

Excel 中查看空值的方法是使用“定位条件”功能对数据表中的空值进行定位。“定位条件”在“开始”目录下的“查找和选择”目录中。

Isnull 是 Python 中检验空值的函数,返回的结果是逻辑值,包含空值返回 True,不包含则返回 False。可以对整个数据表进行检查,也可以单独对某一列进行空值检查。

df_isnull

1#检查特定列空值

2df[‘price’].isnull()

3

40 False

51 True

62 False

73 False

84 True

95 False

10Name: price, dtype: bool

查看唯一值

Excel 中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记。Python 中使用 unique 函数查看唯一值。

Unique 是查看唯一值的函数,只能对数据表中的特定列进行检查。下面是代码,返回的结果是该列中的唯一值。类似与 Excel 中删除重复项后的结果。

1 #查看 city 列中的唯一值

2 df[‘city’].unique()34array(['Beijing ', ‘SH’, ’ guangzhou ', ‘Shenzhen’, ‘shanghai’, 'BEIJING '], dtype=object)

查看数据表数值

Python 中的 Values 函数用来查看数据表中的数值。以数组的形式返回,不包含表头信息。

1#查看数据表的值

2df.values

3

4array([[1001, Timestamp(‘2013-01-02 00:00:00’), 'Beijing ', ‘100-A’, 23,

5 1200.0],

6 [1002, Timestamp(‘2013-01-03 00:00:00’), ‘SH’, ‘100-B’, 44, nan],

7 [1003, Timestamp(‘2013-01-04 00:00:00’), ’ guangzhou ', ‘110-A’, 54,

8 2133.0],

9 [1004, Timestamp(‘2013-01-05 00:00:00’), ‘Shenzhen’, ‘110-C’, 32,

10 5433.0],

11 [1005, Timestamp(‘2013-01-06 00:00:00’), ‘shanghai’, ‘210-A’, 34,

12 nan],

13 [1006, Timestamp(‘2013-01-07 00:00:00’), 'BEIJING ', ‘130-F’, 32,

14 4432.0]], dtype=object)

查看列名称

Colums 函数用来单独查看数据表中的列名称。

1 #查看列名称

2 df.columns

3

4 Index([‘id’, ‘date’, ‘city’, ‘category’, ‘age’, ‘price’], dtype=‘object’)

查看前 10 行数据

Head 函数用来查看数据表中的前 N 行数据,默认 head()显示前 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看前 3 行的数据。

1#查看前 3 行数据``df.head(``3``)

Tail 行数与 head 函数相反,用来查看数据表中后 N 行的数据,默认 tail()显示后 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看后 3 行的数据。

1#查看最后 3 行df.tail(3)

python怎么从excel中读取数据?

VLOOKUP是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为:

VLOOKUP(查找目标,查找范围,返回值的列数,精确OR模糊查找)

下面以一个实例来介绍一下这四个参数的使用

例1:如下图所示,要求根据表二中的姓名,查找姓名所对应的年龄。

公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)

参数说明:

1 查找目标:就是你指定的查找的内容或单元格引用。本例中表二A列的姓名就是查找目标。我们要根据表二的“姓名”在表一中A列进行查找。

公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)

2 查找范围(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目标,如果没有说从哪里查找,EXCEL肯定会很为难。所以下一步我们就要指定从哪个范围中进行查找。VLOOKUP的这第二个参数可以从一个单元格区域中查找,也可以从一个常量数组或内存数组中查找。本例中要从表一中进行查找,那么范围我们要怎么指定呢?这里也是极易出错的地方。大家一定要注意,给定的第二个参数查找范围要符合以下条件才不会出错:

A 查找目标一定要在该区域的第一列。本例中查找表二的姓名,那么姓名所对应的表一的姓名列,那么表一的姓名列(列)一定要是查找区域的第一列。象本例中,给定的区域要从第二列开始,即$B$2:$D$8,而不能是$A$2:$D$8。因为查找的“姓名”不在$A$2:$D$8区域的第一列。

B 该区域中一定要包含要返回值所在的列,本例中要返回的值是年龄。年龄列(表一的D列)一定要包括在这个范围内,即:$B$2:$D$8,如果写成$B$2:$C$8就是错的。

3 返回值的列数(B13 =VLOOKUP(A13,$B$2:$D$8,3,0))。这是VLOOKUP第3个参数。它是一个整数值。它怎么得来的呢。它是“返回值”在第二个参数给定的区域中的列数。本例中我们要返回的是“年龄”,它是第二个参数查找范围$B$2:$D$8的第3列。这里一定要注意,列数不是在工作表中的列数(不是第4列),而是在查找范围区域的第几列。如果本例中要是查找姓名所对应的性别,第3个参数的值应该设置为多少呢。答案是2。因为性别在$B$2:$D$8的第2列中。

4 精确OR模糊查找(VLOOKUP(A13,$B$2:$D$8,3,0) ),最后一个参数是决定函数精确和模糊查找的关键。精确即完全一样,模糊即包含的意思。第4个参数如果指定值是0或FALSE就表示精确查找,而值为1 或TRUE时则表示模糊。这里兰色提醒大家切记切记,在使用VLOOKUP时千万不要把这个参数给漏掉了,如果缺少这个参数默为值为模糊查找,我们就无法精确查找到结果了。

1、接下来,我们的任务是通过利用VLOOKUP函数来实现查找同学C的成绩。为此在单元格中输入“=VLOOKUP”,此时就会发现VLOOKUP包括三个参数和一个可选参数。

其中“lookup_value”是指要查找的值。

参数“table_array”是指搜索的区域,在此在除标题之后的整个数据区域。

第三个参数“col_index_num”是指整个函数返回单元格所在的列号。

2、最后以右括号结尾,并按回车键,就出现想要的结果啦。

python怎么读取excel的数据

最近由于经常要用到Excel,需要根据Excel表格中的内容对一些apk进行处理,手动处理很麻烦,于是决定写脚本来处理。首先贴出网上找来的读写Excel的脚本。

1.读取Excel(需要安装xlrd):

123456789101112131415161718192021222324

#-*- coding: utf8 -*-import xlrd??fname = "reflect.xls"bk = xlrd.open_workbook(fname)shxrange = range(bk.nsheets)try:?sh = bk.sheet_by_name("Sheet1")except:?print "no sheet in %s named Sheet1" % fname#获取行数nrows = sh.nrows#获取列数ncols = sh.ncolsprint "nrows %d, ncols %d" % (nrows,ncols)#获取第一行第一列数据cell_value = sh.cell_value(1,1)#print cell_value??row_list = []#获取各行数据for i in range(1,nrows):?row_data = sh.row_values(i)?row_list.append(row_data)

2.写入Excel(需安装pyExcelerator)

12345678

from pyExcelerator import *?w = Workbook()? #创建一个工作簿ws = w.add_sheet('Hey, Hades')? #创建一个工作表ws.write(0,0,'bit') #在1行1列写入bitws.write(0,1,'huang') #在1行2列写入huangws.write(1,0,'xuan') #在2行1列写入xuanw.save('mini.xls')? #保存

3.再举个自己写的读写Excel的例子

读取reflect.xls中的某些信息进行处理后写入mini.xls文件中。 

1234567891011121314151617181920212223242526272829303132333435363738394041424344

#-*- coding: utf8 -*-import xlrdfrom pyExcelerator import *??w = Workbook()ws = w.add_sheet('Sheet1')?fname = "reflect.xls"bk = xlrd.open_workbook(fname)shxrange = range(bk.nsheets)try:?sh = bk.sheet_by_name("Sheet1")except:?print "no sheet in %s named Sheet1" % fname?nrows = sh.nrowsncols = sh.ncolsprint "nrows %d, ncols %d" % (nrows,ncols)??cell_value = sh.cell_value(1,1)#print cell_value??row_list = []mydata = []for i in range(1,nrows):?row_data = sh.row_values(i)?pkgdatas = row_data[3].split(',')?#pkgdatas.split(',')?#获取每个包的前两个字段?for pkgdata in pkgdatas:??pkgdata = '.'.join((pkgdata.split('.'))[:2])??mydata.append(pkgdata)?#将列表排序?mydata = list(set(mydata))?print mydata?#将列表转化为字符串?mydata = ','.join(mydata)?#写入数据到每行的第一列?ws.write(i,0,mydata)?mydata = []?row_list.append(row_data[3])#print row_list?w.save('mini.xls')

4.现在我需要根据Excel文件中满足特定要求的apk的md5值来从服务器获取相应的apk样本,就需要这样做: 

123456789101112131415161718192021222324252627282930313233

#-*-coding:utf8-*-import xlrdimport osimport shutil??fname = "./excelname.xls"bk = xlrd.open_workbook(fname)shxrange = range(bk.nsheets)try:?#打开Sheet1工作表?sh = bk.sheet_by_name("Sheet1")except:?print "no sheet in %s named Sheet1" % fname#获取行数nrows = sh.nrows#获取列数ncols = sh.ncols#print "nrows %d, ncols %d" % (nrows,ncols)#获取第一行第一列数据cell_value = sh.cell_value(1,1)#print cell_value??row_list = []#range(起始行,结束行)for i in range(1,nrows):?row_data = sh.row_values(i)?if row_data[6] == "HXB":??filename = row_data[3]+".apk"??#print "%s %s %s" %(i,row_data[3],filename)??filepath = r"./1/"+filename??print "%s %s %s" %(i,row_data[3],filepath)??if os.path.exists(filepath):???shutil.copy(filepath, r"./myapk/")

补充一个使用xlwt3进行Excel文件的写操作。

1234567891011121314151617181920212223242526

import xlwt3?if __name__ == '__main__':?????????datas = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h']]#二维数组????file_path = 'D:\\test.xlsx'?????????wb = xlwt3.Workbook()????sheet = wb.add_sheet('test')#sheet的名称为test?????????#单元格的格式????style = 'pattern: pattern solid, fore_colour yellow; '#背景颜色为黄色????style += 'font: bold on; '#粗体字????style += 'align: horz centre, vert center; '#居中????header_style = xlwt3.easyxf(style)?????????row_count = len(datas)????col_count = len(datas[0])????for row in range(0, row_count):????????col_count = len(datas[row])????????for col in range(0, col_count):????????????if row == 0:#设置表头单元格的格式????????????????sheet.write(row, col, datas[row][col], header_style)????????????else:????????????????sheet.write(row, col, datas[row][col])????wb.save(file_path)

输出的文件内容如下图:

注:以上代码在Python 3.x版本测试通过。

好了,python操作Excel就这么!些了,简单吧

python 微信怎么查询数据库表内所有内容

我常用pymssql连接M$SQL服务器, 没用过pyodbc, 但按理应该都差不多。

若用pymssql, 从数据库中取数据的过程如下:

import pymssql

connect_setting = {

'host': '127.0.0.1',

'user': 'sa',

'password': '',

'database': 'master',

'charset': 'gb18030'

}

conn = pymssql.connect(**connect_setting)

curr = conn.cursor()

curr.execute("select list, name from nlist")

result = [(lst, name) for lst, name in curr]

curr.close()

conn.close()

关于"如何查询,list的每个值在数据库中对应的Name“

若库表中的数据像下面的样子:

id, name:

1, 'python'

2, 'perl'

3, 'c'

4, 'java'

且每行id是唯一值, 将从数据库表中拿到的数据放到一个字典中:

curr.execute("select id, name from nlist")

dd = dict([(id, name) for id, name in curr])

lst = [1,2,3,4,5,6]

用dd进行转换

[(i, dd.get(i)) for i in lst]

==

[(1, 'python'), (2, 'perl'), (3, 'c'), (4, 'java'), (5, None), (6, None)]

or

[dd.get(i, i) for i in lst]

==

['python', 'perl', 'c', 'java', 5, 6]

Python如何读取csv文件某一列的每一行数据,并判断该数值是否满足条件?

读取csv文件,用的是csv.reader()这个方法。返回结果是一个_csv.reader的对象,我们可以对这个对象进行遍历,输出每一行,某一行,或某一列。代码如下:

每一行都是一个list,然后用条件判断即可

(责任编辑:IT教学网)

更多

推荐SQL Server文章