10月16日我的学习心得与个人理解

文本文件读取

pd.read_csv(

filepath_or_buffer,

sep=',',

header='infer',

name=None,

usecole=None,

skiprows=None,

skipfooter=None,

converters=None,

encoding=None,

thousands=None

)

filepath_or_buffer:指定txt文件或csv文件所在的具体路径

sep:指定原数据集中各字段之间的分隔符,默认为逗号','

    id  name  income

    1   jason  10

header:是否需要将原数据集中的第一行作为表头,默认将第一行用做字段名称,如果原数据没有表头需要将该参数设置为None

names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头

usecols:指定需要读取原数据集中的哪些变量名

skiprows:数据读取时,指定需要跳过原数据集开头的行数,有一些表格开头是有几行文字说明的,读取的时候应该跳过

skipfooter:数据读取时,指定需要跳过原数据集末尾的行数

converters:用于数据类型的转换(以字典的形式指定)

encoding:如果文件中含有中文,有时需要指定字符编码

thousands:可以修改数字里面的千分位

import numpy as np

import pandas as pd

data01 = pd.read_csv(

r'data_test01.txt',

skiprows = 2,          python能自动过滤掉完全无内容的空行(写2,3均可)    

sep = ',',             默认为逗号,写不写都行

skipfooter = 3,

encoding = 'utf-8',         乱码指定对应的编码

header = None,        数据没有表头时,需要设置参数为None.设置为None时,默认用索引值做表头

names = ['id','year','month','date','gender','job','salary'],

                id如果不想做自动转换,可以修改id数据类型

converters = {'id':str},      用Python类型指定

thousands = '&',        去除表示千分位的&符号

usecols = ['job','salary']

)

data01

excel表格读取

 pd.read_excel(io,sheet_name=0,header=0,skiprows=None,skip_footer=0

index_col=None,names=None,

na_values=None,thousands=None,convert_float=True)

io:指定电子表格的具体路径

sheet_name:指定需要读取电子表格中的第几个sheet,即可以传递整数也可以传递具体的sheet名称

header:是否需要将数据集的第一行开头作表头,默认为是需要的

skiprows:读取数据时,指定跳过的开始行数

skip_footer:读取数据时,指定跳过的末尾行数

index_col:指定哪些列用作数据框的行索引

na_values:指定原始数据中哪些特殊值代表了缺失值

thousands:指定原有数据集中的千分位符

convert_float:默认将所有的数值型字段转换为浮点型字段

converters:通过字典的形式,指定某些列需要转换的形式

pd.read_excel(r'data_test02.xlsx',

         header = None,

       names = ['ID','Prodect','Color','Size'],

       converters = {'ID':str}

       )

表格读取的具体操作

  pd.read_excel(r'data'_test02.xlsx',

          header = None,

          names = ['id','product','color','price'],

          converters = {'id':str},

          index_col = 0,      指定列名称作为标签项

          sheet_name = 1,       通过索引的方式读取工作簿

          sheet_name = 'bbb'     通过工作簿名称读取

          )

MySQL数据读取

  需要借助于第三方模块来链接MySQL数据库

    pymsql

  !pip3 install pymysql

  如果出错,只需将pip更新的代码加上即可

  import pymysql

  conn = pymysql.connect(host,port,user,password,database,charset)

  host:指定需要访问的MySQL服务器IP地址

  port:指定访问MySQL数据库的端口号

  charset :指定读取MySQL数据库的字符集,数据库表中含有中文时,可以将该参数设置为'utf-8'或'gbk'

  user:指定访问MySQL数据库的用户名

  password/pwd:指定访问MySQL数据库的密码

  database/db:指定访问MySQL数据库的具体库名

MySQL数据库具体操作

  ! python -m pip install --upgrade pip

  ! pip3 install pymysql

  import pymysql

  bri = pymysql.connect(

    host = '127.0.01',

    port = 3306

    user = 'root'

    password = ''

    database = 'day06'

    charset = 'utf8'

)

res = pd.read_sql('select * from course',con=bri)

res

bri.close()          断开链接,节省资源。操作速度很快没拿到数据之前就断开了

 

数据概览

df.columns            查看列

df.index              查看行

df.shape              行列

df.dtypes               数据类型

df.describe            统计描述

  默认只统计数字类型的数据,非数字类型统计需要加参数include

  sec_buildings.describe(include='object')

df.head()             取头部多条数据      

df.tail()              取尾部多条数据 

行列操作

dfrename(column={'旧列名称':'新列名称'},inplace=True)

 能修改但是会报个错误可添加如下配置

pd.set_option('mode.chained_assignment',None)

 创建新的列

df['新列名称'] = df.列名称/(df.列名称1+df.列名称2)

 自定义位置

df.insert(3,'新列名称',新列名称)

 添加行

df3 = df1.append(df2)

读取数据时有两种方式

第一种

  df['列名称']

  df[['列名称1','列名称2','列名称3',...]]

第二种(不推荐经常用)

  df.列名称

数据筛选

  获取指定列数据

  df['列名']

  df[['列名1','列名2','列名3'...]]

  获取指定行数

  sec_bulidings.loc[sec_buildings['region'] == '浦东',:]

     sec_buildings.loc[(sec_building['region'] == '浦东') & (sec_buildings['size'] > 150),:]

   sec_buildings.loc[(sec_buildings['region'] == '浦东') & (sec_buildings['size'] > 150),['name','tot_amt','price_unit']]

 逻辑运算符链接条件,条件最好用括号括起来

数据处理

  sec_car = pd.read_csv(r'sec_cars.csv')

  sec_car.head()

  sec_car.dtypes

     sec_car.Bording_time = pd.to_datetime(sec_car.Boarding_time,format = '%Y年%m月')

     sec_car.New_price = sec_car.New_price.str[:-1].astype(float)

类型转换

  dtypes类型查看

  astype类型转换

 

posted @ 2020-10-16 16:51  ACE2020  阅读(116)  评论(0)    收藏  举报