利用Pandas模块读取数据
读取文本文件
1、函数pandas.read_csv()用于读取文本文件
2、各个参数的含义:sep 用于指定每列间用什么符号隔开;skiprows 用于指定文本前面需要跳过多少行;skipfooter用于指定文本末尾需要跳过多少行;header用于指定是否有列名;names 用于指定新的列名;converters用于转换列类型,当某些列最前面的数字0无法显示时,可以用该参数转换;encoding用于当出现乱码无法显示时转换文本类型;thousands用于去掉千位符。
data2= pd.read_csv('/Users/eileen/Documents/PYlearn/datas/data2.txt',sep=' ',skiprows =0, skipfooter =0,header=None,names=['ID','name','income'], converters={'ID':str},encoding ='utf-8',thousands=',')
print(data2)
原始文件
利用pandas模块输出后的表格
读取电子表格
1、函数pandas.read_excel()用于读取电子表格
2、各个参数的含义:与读取文本文档的含义一样,不同的是换一个函数名称,sheet_name指定sheet页,如sheet_name =‘sheet1’ 或者 sheet_name = 1。
data2=pd.read_excel('/Users/eileen/Documents/PYlearn/datas/test2.xlsx',sheet_name =0 ,skiprows =0, skipfooter =0,header=None,names=['ID','name','income'], converters={'ID':str},thousands=',')
print(data2)
连接MySQL数据库并读取数据
1、函数pandas.read_sql()用sql 代码获取数据库中信息
2、函数pymysql.connect(), 需要提及一下charset参数,用于指定编码类型,包含中文是用‘utf-8’;对于port参数可以不用指定,因为数据库端口号通常为‘3306’。
import pymysql
bridge = pymysql.connected(host='127.0.0.1',user='eileen',password='iloveyou',database='train',port='3306',charset='utf-8')
table1=pd.read_sql('''select * from ''',con= bridge)
bridge.close()#切断与数据库的联系
其中3引号中的SQL代码可以替换为任意合法的查询代码。
数据概览
1、用于数据概览的函数和属性有:
df.head()#用于展示表的前5行数据
df.describe()#用于显示最大值、中位数和均值等,适用于非对象类型,df.describe(include=‘object’)使用于对象类型
df.shape#用于显示表的列数和行数
df.columns#用于显示列名称
df.dtypes#用于显示每列的数据类型
数据清洗
1、取出特定行数据
#df[condition,:]
data6 = data4.loc[data4['开户省']=='江苏',:]
data7 = data4.loc[(data4['开户省']=='江苏') &(data4['记账日期']=="2020-04-01"),:]
print(data7)
2、取出特定列数据
data5= data4[['充值日报', '收单方清算数', '日报-清算数', '日报笔数', '收单方日报', '日报-收单方日报', '收单方日报笔数', '日报-收单方笔数']]
3、取出特定行列数据
data8 = data4.loc[(data4['开户省']=='江苏') & (data4['记账日期']=="2020-04-01"),['收单方日报笔数', '日报-收单方笔数']]
4 、将对象类型转换为时间
data8 = pd.to_datetime[data4['记账日期'],format='%Y%M%D]]
5、去掉某列中的某些字符
data6['网点名称'] = data6['网点名称'].str[:-1]
6、转换某列的类型
data5['收单方清算数']=data5['收单方清算数'].astype(int)
7、判断标中是否有重复行
data5.duplicated()#结果为True的行为重复行
8、去掉重复行
data5.drop_duplicates(inplace=True)#默认inplace=False表示不在原数据上修改