Python系列(3)——Pandas数据库读取数据
Pandas主要先读取表格类型的数据,然后进行分析。
import pandas as pd
# 由于是用pandas模块操作数据,因此不用在路径前加open,否则就是python直接打开文件,可能还会打不开出错
# file_path_excel = open('E:\\学习\\Python\\Pandas模块的导入及学习-数据分析\\bank.xls')是错的
# 文件所在的位置,文件路径用双杠\\,或是反方向单杠/, 或在文件路径前加一个r即可直接使用原路径的单杠\即:r'\'
# 'E:\\学习\\bank.csv' 或 'E:/学习/bank.csv' 或 r'E:\学习\bank.csv' 都是正确的
1.读取纯文本文件 --使用pandas.read_csv
1.1 读取csv,使用默认的标题行、逗号分隔符--有时csv文本中的数据编码不兼容,打开时出错,read_csv(..,encoding=’换一种更通用更高级的编码如gbk,gb18030等即可’)
1 file_path_csv = 'E:\\学习\\Python\\Pandas模块的导入及学习-数据分析\\bank.csv' # 文件路径为\\或/或r'\'都可 2 bank_csv = pd.read_csv(file_path_csv) # 使用pandas.read_csv读取文件 3 print(bank_csv.head()) # 查看前几行数据,默认显示前5行数据 4 print(bank_csv.shape) # 查看数据的形状,返回(行数,列数) 5 print(bank_csv.dtypes) # 查看每列的数据类型
1.2 读取txt文件,自己制定分隔符
1 file_path_txt = 'E:\\学习\\Python\\Pandas模块的导入及学习-数据分析\\bank.txt' 2 bank_txt = pd.read_csv(file_path_txt, sep=' ', header=None, names=['name', 'password', 'balance']) 3 # sep=' '空格为自己设定的分隔符,,默认是','号;header=None 如果不将数据集的第一行作为表头,需要设置header=None, 4 # header指定行数用来作为列名,数据开始行数,如果需要第一行做表头 header=0 即可;names后面是自己加入指定的标题 5 # bank_txt = pd.read_csv(file_path_txt, sep=' ', header=0) 6 print(bank_txt)
2.读取excel文件--使用pandas.read_excel
1 bank_excel = pd.read_excel('E:/学习/Python/Pandas模块的导入及学习-数据分析/bank.xls', sheet_name='user') 2 print(bank_excel)
2.1 读取同一文件下的多个sheet数据--使用pandas.ExcelFile('文件名')
1 excel_reader = pd.ExcelFile(r'C:\Users\Administrator\Desktop\test.xls') # 指定文件 2 """ 3 sheet_names = excel_reader.sheet_names # 读取文件的所有表单名,得到列表 4 # 读取表单的内容,i是表单名的索引,等价于pd.read_excel('文件', sheet_name=sheet_names[i]) 5 df_data = excel_reader.parse(sheet_name=sheet_names[i]) 6 """ 7 df1 = excel_reader.parse(sheet_name='1') # 读取表单内容 8 df2 = excel_reader.parse(sheet_name='2')
2.2 对excel的一些简单操作
1 print(bank_excel.shape) # 读取行列 2 n_rows = bank_excel.shape[0] 3 print(n_rows) # 读取最大行 4 n_columns = bank_excel.columns.size 5 print(n_columns) # 读取最大列 6 print(bank_excel.iloc[0, 1]) # 读取指定行列内容 列和行的序号都从0开始,且iloc索引不含标题行 7 # iloc与loc的区别在于,iloc[行号,列号]而不是loc[行名,列名] 8 9 for i in range(n_rows): 10 for j in range(n_columns): 11 print(bank_excel.iloc[i, j]) # 遍历表格 12 13 print(bank_excel.iloc[0].values) # iloc索引 返回列表除标题外的第一行数据 14 print(bank_excel.index.values) # 获取行号并打印输出 15 print(bank_excel.columns.values) # 获取列名并打印输出 16 17 r = bank_excel.loc[bank_excel['name'] == 'tom'] # 输出筛选的数据内容 18 e = bank_excel.loc[bank_excel['balance'] >= 1000] 19 s = bank_excel.loc[bank_excel['name'].str.contains('o')] # 输出含有字符o的数据 20 # 组合条件用&符号合并,每个条件判断都得带括号 21 m = bank_excel.loc[(bank_excel['balance'] >= 1000) & (bank_excel['name'] == 'tom')] 22 u = bank_excel.loc[:, ['name', 'balance']] # 输出指定列的所有内容 23 l = bank_excel.loc[0:2, ['name', 'balance']] # 输出指定列的0-2行数据内容 24 t = bank_excel.loc[0:2, ] # 输出指定行0-2行数据 25 print(r) 26 print(s)
3.读取MySQL数据库
1 import pymysql 2 connect_mysql = pymysql.connect(host='S12345678', user='sa', password='*******',database='test1', charset='utf8') 3 # pymysql.connect(host=“你的数据库地址--一般是计算机名”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) 4 mysql_page = pd.read_sql('select * from [test1].[dbo].[course]', con=connect_mysql) 5 print(mysql_page)