Python数据分析笔记(上)

这篇笔记主要介绍了Python数据分析的基础操作,包括文本、电子表格和数据库数据的读取,以及数据清洗和概览。重点讲解了Pandas的read_csv、read_excel、read_sql函数,还涉及了数据的重复值和缺失值处理,以及数据的合并和连接操作。
摘要由CSDN通过智能技术生成

文本文件的读取

Pandas读取官方文档查阅地址 Input/Output — pandas 0.24.2 documentation (pydata.org)

read_csv\read_table(filepath_or_buffer,sep=’\t’,header=’infer’,names=None,index_col=None,usecols=None,dtype=None,converters=None,skiprows=None,skipfooter=None,nrows=None,na_values=None,skip_blank_lines=True,parse_dates=False,thousands=None,comment=None,encoding=None)
读取txt,注意到以下问题:如何忽略其他不相关内容,手动添加#;如何添加变量名称;如何避免编号中’00’的消失。
在这里插入图片描述

import pandas as pd

data1=pd.read_table(filepath_or_buffer=r'D:\Projects\Python\Doing\pythonProject\data\data1.txt',
                   sep=',',# 指定分隔符
                   header=None, # 不需要将原始数据中的第一行读作表头
                   names=['id','name','gender','occupation'], # 为各列起变量名称
                   skiprows=2, #跳过起始的两行数据
                   skipfooter=2, #跳过末尾的两行数据
                   comment='#', # 不读取'#'开头的数据行
                   converters={
   'id':str}, #对工号变量进行类型转换,避免开头的00消失
                   encoding='gbk'
                   )
print(data1)
'''
      id name gender occupation
0  00446   张敏      女      前端工程师
1  00483   李琴      女  Java开发工程师
2  00552  赵东来      男      数据分析师
3  00589  丁顺昌      男      数据分析师
'''

电子表格的读取

read_excel(io,sheetname=0,header=0,skiprows=Nne,skip_footer=0,index_col=None,names=None,parse_cols=None,parse_dates=False,na_values=None,thousands=None,convert_float=True)
在这里插入图片描述

import pandas as pd

data2=pd.read_excel(io=r'D:\Projects\Python\Doing\pythonProject\data\data2.xlsx',
                   header=None, # 不需要将原始数据中的第一行读作表头
                   names=['id','date','prod_name','color','price'], # 为各列起变量名称
                   converters={
   '0':str}, #字典中的键必须为0,因为原始表中没有列名称
                    na_values='未知' # 原数据表中“未知”转换为缺失值
                   )
print(data2)
'''
        id       date prod_name  color price
0    23146 2016-03-18       连衣裙    237    白色
1  1344527 2017-06-12       牛仔裤    368    蓝色
2   223685 2018-02-10        皮鞋    589   NaN
3    37249 2017-07-17        寸衫    299    白色
4   368241 2016-03-23        板鞋    299    蓝色
5  1127882 2018-09-17        西装   1599    黑色
'''

数据库数据的读取

读入SQL Server需要使用pymssql模块,在jupyter中输入“!pip install pymssql”;
读入MySQL需要使用Pymysql模块,在jupyter中输入“!pip install pymysql”。
然后基于两个模块各自的connect函数构建数据库与python之间的桥梁,最后在搭建好连接的基础上使用pandas模块中的read_sqll函数实现数据库数据的读取。
1.connect函数
(1)pymssql.connect(server=None,user=None,password=None,database=Nonesharset=None)
在这里插入图片描述
(2)pymysql.connect(host=None,user=None,password=’’,database=None,port=0,charset=’’)
在这里插入图片描述
2.read函数
pd.read_sql(sql,con,index_col=None,coerce_float=True,parse_dates=None,columns=None)
在这里插入图片描述

SQL SERVER连接

import pymssql
import pandas as pd
# 连接SQL Server数据库
connect=pymssql.connect(server='localhost',# 指定服务器名称
                        user='', # 指定访问数据库的用户名
                        password='', # 指定访问数据库的密码
                        database='train', # 指定数据所在数据库的名称
                        charset='utf8' # 指定UTF-8字符集,避免中文乱码
                        )
# 读取数据
data=pd.read_sql("select * from sec_buildings where direction='朝南'",con=connect)
# 关闭连接
connect.close()
# 数据输出
data.head()

MySQL连接

import pymysql
import pandas as pd
# 连接MySQL数据库
connect=pymysql.connect(host='localhost',# 指定服务器名称
                        user='root', # 指定访问数据库的用户名
                        password='123456', # 指定访问数据库的密码
                        database='wx', # 指定数据所在数据库的名称
                        port=3306, # 指定数据库连接的端口号
                        charset='utf8' # 指定UTF-8字符集,避免中文乱码
                        )
# 读取数据
data=pd.read_sql("select * from wx_gift",connect)
# 关闭连接
connect.close()
# 数据输出
print(data)
'''
   gift_id    name  point_needed  num_released                    img
0        1  党员学习笔记           100             3  /static/photo/礼品1.jpg
1        2    古典书签            50            23  /static/photo/礼品2.jpg
2        3   古风扇书签           300             4  /static/photo/礼品5.jpg
3        4   党建纪念品          1000            10  /static/photo/礼品4.jpg
'''
import pandas as pd
# 读取数据
data3=pd.read_excel(io=r'D:\Projects\Python\Doing\pythonProject\data\data3.xlsx')
# 查看数据规模
print(data3.shape
# (3000, 6)
# 查看表中各变量的数据类型
print(data3.dtypes)
'''
id              int64
gender         object
age           float64
edu            object
custom_amt     object
order_date     object
dtype: object
'''

数据的概览与清洗

从外部环境将数据读入到Python中后,首先要了解数据,数据规模、各变量的数据类型、是否存在重复值、缺失值等。
1.数据类型的判断和转换,读取数据,了解数据规模、各变量的数据类型

  • astype用于数据类型的强制转换,常用转换类型包括str、float、int。
  • 由于消费金额custom_amt变量中带有‘¥’,所以数据类型转换之前必须将包其删除(通过字符串切片方法删除,[1:]表示从字符的第二个元素开始截断)。
  • 对于字符转日期问题,推荐使用更加灵活的pandas的to_datetime方法,在format参数的调解下,可以识别任意格式的字符型日期值。
import pymysql
import pandas as pd
# 读取数据
data3=pd.read_excel(io=r'D:\Projects\Python\Doing\pythonProject\data\data3.xlsx')
# 查看数据规模
# print(data3.shape
# (3000, 6)3000行6列
# 查看表中各变量的数据类型
# print(data3.dtypes)
'''
id              int64
gender         object
age           float64
edu            object
custom_amt     object
order_date     object
dtype: object
'''
# 数值型转字符型
data3['id']=data3['id'].astype(str)
# 字符型转数值型
data3['custom_amt']=data3['custom_amt'].str[1:].astype(float)
# 字符型转日期型
data3['order_date']=pd.to_datetime(data3['order_date'],format='%Y年%m月%d日')

# 重新查看数据集的各变量类型
# print(data3.dtypes)
'''
id                    object
gender                object
age  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值