《Python数据分析入门学习》- 2、简单数据预处理

本文是《Python数据分析入门学习》的第二部分,主要介绍了Python中的数据类型(布尔型、数值型、字符型)、数据结构(Pandas的Series和DataFrame),以及数据的导入和导出(CSV、TXT、EXCEL)。通过实际代码演示了如何操作,为后续的数据分析打下基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《Python数据分析入门学习》- 2、简单数据预处理


本文是《Python数据分析入门学习》系列的第2篇文章,分别有以下几个部分组成:学习的目标和内容、所需的设备及程序运行环境的搭建、实操代码及运行结果。

1 学习目标

本次需要学习的目标主要有以下几点:
(1) Python中变量的命名;
(2) Python中的数据类型——布尔型、数值型、字符型;
(3) Python中的数据结构——Pandas中的系列、数据框;
(4) Python中的数据的导入及导出-CSV\TXT\EXCEL;

2 学习内容

(1) Python中3种数据类型的概念及使用,包括布尔型、数值型、字符型;
(2) Python中基于Pandas的2种数据结构,系列Series和数据框DateFrame;
(3) Pandas模块中的函数对CSV、Excel、TXT格式数据文件进行导入和导出;

3 代码应用

3.1 数据类型

3.1.1 测试代码
# -*- coding: utf-8 -*-
"""==============================
#@Project : demo2
#@File    : data_type1
#@Software: PyCharm
#@Author  : Echo
#@Email   : robot1483693261@163.com
#@Date    : 2022/5/6 15:20
#@Desc    : 
=============================="""
# 1、逻辑类型布尔
x = 1
y = 2
print(x > y)
t = True
f = False
print(True & True)  # 与
print(True & False)
print(False & False)
print(True | True)  # 或
print(True | False)
print(False | False)
print(not True)  # 非
print(not False)

# 2、数值型
x = 1
y = 2
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(7 // 4)  # 取整
print(10 % 4)  # 求余
print(2 ** 3)  # 乘方

# 浮点数运算需要注意的地方
a = 4.2
b = 2.1
print(a + b)
(a + b) == 6.3
# 解决方式1
print(a + b)
# 解决方式2
from decimal import Decimal

a = Decimal('4.2')
b = Decimal('2.1')
a + b
print(a + b)

# 3、字符型
x = '我是一个字符串'  # 字符串str用单引号(' ')或双引号(" ")或三引号(""" """)括起来
y = "我也是一个字符串"
z = """我还是一个字符串"""
print(x)
print(y)
print(z)
s = 'Yes,he doesn\'t'  # 使用反斜杠(\)转义特殊字符。
print(s)
print('C:\some\name')  # \n 表示回车
print('C:\\some\\name')  # 加反斜杠(\)转义回车符
print(r'C:\some\name')  # 开头加一个r,表示原始字符
s = "abcd\
efg"
print(s)  # 反斜杠可以作为续行符,表示下一行是上一行的延续
s = """
Hello I am 2贰进制!
Thinks.
"""
print(s)
print('str' + 'ing', '2贰进制' * 3)

word = 'Python'
print(word[0], word[5])
print(word[-1], word[-6])

word = 'ilovepython'
print(word[1:5])
print(word[:])
print(word[5:])

'''Python字符串不能被改变'''
#向一个索引位置赋值,比如 word[0] = 'm'会导致错误。
word[0] = 'm'
3.1.2 测试结果
False
True
False
False
True
True
False
False
True
3
-1
2
0.5
1
2
8
6.300000000000001
6.300000000000001
6.3
我是一个字符串
我也是一个字符串
我还是一个字符串
Yes,he doesn't
C:\some
ame
C:\some\name
C:\some\name
abcdefg

Hello I am 2贰进制!
Thinks.

string 2贰进制2贰进制2贰进制
P n
n P
love
ilovepython
python

Process finished with exit code 0

3.2 数据结构

3.2.1 测试代码
# -*- coding: utf-8 -*-
"""==============================
#@Project : demo2
#@File    : data_structure2
#@Software: PyCharm
#@Author  : Echo
#@Email   : robot1483693261@163.com
#@Date    : 2022/5/6 16:09
#@Desc    : 
=============================="""

# 1、数据结构Series
from pandas import Series  # 从pandas包中导入series对象

# 1.1定义序列
x = Series(['a', True, 1])  # 默认索引:0,1,2
x = Series(['a', True, 1], index=['first', 'second', 'third'])  # 自定义索引
# 1.2访问数据
x[1]  # 根据默认索引访问
x['second']  # 根据自定义索引访问
# x[3]  #不能越界访问

# 1.3往序列中增加数据
# x.append('2') #采用append方法时,不能追加单个元素
n = Series(['2'], index=['forth'])  # 但可以追加一个系列
x.append(n)
x = x.append(n)  # append方法并不直接修改对象,需要对对象重新赋值
# 1.4获取数据
# 判断值是否存在
'2' in x.values
x[1:3]  # 保留x[1]和x[2]
x[[0, 2, 1]]  # 定位获取
x.values  # 获取序列中的所有值
# 1.5删除数据
x.drop('first')  # 根据索引删除
# 与append一样,drop操作后不会对x有影响,若想修改x,需要采用x=x.drop
x.drop(x.index[3])  # 根据位置删除
# x.index[3] = 'forth'  # 索引序列中的第4项
x['2' != x.values]  # 根据值删除

# 2数据结构DataFrame
from pandas import DataFrame  # 导入pandas包中的数据框类

# 2.1定义一个数据框
df = DataFrame({'age': [21, 22, 23], 'name': ['mary', 'lily', 'lucy']})
df = DataFrame(
    data={'age': [21, 22, 23],
          'name': ['mary', 'lily', 'lucy']},
    index=['first', 'second', 'third'])
df['age']  # 按列访问           #3.访问数据框中的元素
df[['age', 'name']]  # 访问多列
df[1:2]  # 按行访问,注意左闭右开,取第二行数据
df.loc[['first', 'second']]  # 按行索引访问
df.iloc[0:1, 0:1]  # 按行列号访问,第0行第0个元素,21
df.iloc[1:2, 0:1]  # 第1行第0个元素,22
df.iloc[2:3, 0:1]  # 第2行第0个元素,23
df.iloc[0:1, 1:2]  # 第0行第1个元素,mary
df.iloc[1:2, 1:2]  # 第1行第1个元素,lily
df.iloc[2:3, 1:2]  # 第2行第1个元素,lucy
df.at['first', 'name']  # 按行索引、列名访问
df.at['first', 'age']
print(df)

# 2.2修改数据框
df.columns
df.columns = ['age2', 'name2']  # 修改列名
df.index  # 修改行索引
df.index = range(1, 4)  # 包括1,2,3,不包括4
df.index
print(df)
# 2.3删除数据框数据
df = DataFrame(
    data={
        'age': [21, 22, 23],
        'name': ['mary', 'lily', 'lucy']},
    index=['first', 'second', 'third'])
df.drop('first', axis=0)  # 根据行索引删除,axis=0代表行
df.drop('age', axis=1)  # 根据列名删除,axis=1代表行
df.drop('name', axis=1)
del df['age']  # 第二种删除列的方法,直接对原数据进行删除
print(df)
# 2.4增加数据框数据
df = DataFrame(
    data={
        'age': [21, 22, 23],
        'name': ['mary', 'lily', 'lucy']},
    index=['first', 'second', 'third'])
df.loc[len(df)] = [24, 'jenny']  # 增加行,直接修改原数据
df['new'] = [2, 4, 6, 8]  # 增加列,直接修改原数据
print(df)
3.2.2 测试结果
        age  name
first    21  mary
second   22  lily
third    23  lucy
   age2 name2
1    21  mary
2    22  lily
3    23  lucy
        name
first   mary
second  lily
third   lucy
        age   name  new
first    21   mary    2
second   22   lily    4
third    23   lucy    6
3        24  jenny    8

Process finished with exit code 0

3.3 数据导入

3.3.1 测试代码
# -*- coding: utf-8 -*-
"""==============================
#@Project : demo2
#@File    : data_import3
#@Software: PyCharm
#@Author  : Echo
#@Email   : robot1483693261@163.com
#@Date    : 2022/5/6 18:33
#@Desc    : 
=============================="""
# 4.1.1 CSV文件
from pandas import read_csv
from pandas import DataFrame

df = DataFrame({'age': [2, 4, 3, 5], 'name': ['2', '贰', '进', '制']})
print(df)
'''#若文件编码包含中文,则需要设置encoding='UTF-8'
df1 = read_csv(
'F:/study/Python/DataMining/DataImport/4.1/1.csv',
 encoding='UTF-8'
 )
'''
# 4.1.2 txt文件
from pandas import read_table

'''#错误导入
#df = read_table('F:/2贰进制/Python/DataImport/4.1/2.txt')
#df
#问题:默认将第一行数据作为列名,结果将数据作为了列名
#原因:在导入的时候只确定了文件的路径,缺乏列名
#修正:在导入的时候确定文件的路径、列名以及分隔符'''
df1 = read_table('2.txt',  # 文件路径
                 names=['age', 'name'],  # 列名
                 sep=',')  # 列与列之间的分隔符
print(df1)
# 4.1.3 excel文件
from pandas import read_excel

df = read_excel(
    '3.xlsx',
    sheetname='data')
print(df)

3.3.2 测试结果

读取Excel需要安装引擎,否则会报错,常见的引擎有:xlrd和openpyxl,本文以openpyxl为例
安装命令如下:

$ pip install openpyxl

安装成功提示如下:

Successfully installed et-xmlfile-1.1.0 openpyxl-3.0.10
   age name
0    2    2
1    4    贰
2    3    进
3    5    制
    age       name
0    23         2贰
1    32          进
2    25          制
3  2贰进制  2erjinzhi
   age  name
0   23   KEN
1   32  John
2   25  JIMI

Process finished with exit code 0

3.4 数据导出

3.4.1 测试代码
# -*- coding: utf-8 -*-
"""==============================
#@Project : demo2
#@File    : data_output4
#@Software: PyCharm
#@Author  : Echo
#@Email   : robot1483693261@163.com
#@Date    : 2022/5/6 20:50
#@Desc    : 
=============================="""
# CSV文件导出
from pandas import DataFrame

df = DataFrame({'age': [2, 4, 3, 5], 'name': ['2', '贰', '进', '制']})
# 按照默认格式进行导出,即保留行序号和列名
df.to_csv("d1.csv")
# 若导出时不保留行序号
df.to_csv("d2.csv",index=False)
3.4.2 测试结果

在这里插入图片描述

下篇预告

《Python数据分析入门学习》系列的第3篇,即下一篇文章的主要内容是进阶数据预处理。敬请期待~~

其他内容

公众号文章:
https://mp.weixin.qq.com/s/ynG-dNNqO8kjIdf6ZFiZbg

优快云主页地址:
https://blog.youkuaiyun.com/meenr

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunAqua

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值