python数据分析-获取数据(2)

声明:此文只是对《对比excel,轻松学习python数据分析》这本书的读书笔记,文章中的代码均来源于书中,仅以知识分享为用途,后续我会继续支持作者,也会继续读完这本书,如有侵权,请留言我删除

获取数据

导入数据主要使用的是pandas里的read_x()方法,x表示待导入的文件

导入.xlsx文件

# 导入指定文件路径的文件
df = pd.read_excel(r'C:\Users\GQ\Desktop\dir\text.xlsx')  # 这里注意使用转义字符
print(df)

   编号  年龄 性别       注册时间
0  A1  272017-10-19
1  A2  432018-03-03
2  A3  192007-09-03
3  A4  352019-05-21
  • 指定导入哪个Sheet

.xlsx格式的文件可以有多个Sheet,可以通过具体的Sheet名字来读取

df = pd.read_excel(r'C:\Users\GQ\Desktop\dir\text.xlsx', sheet_name='Sheet2')
print(df)

   测试1  测试2  测试3
0    1    2    3
1    1    2    3
2    1    2    3

也可以传入Sheet的顺序来读取,默认从0开始计数

df = pd.read_excel(r'C:\Users\GQ\Desktop\dir\text.xlsx', sheet_name=0)
print(df)

   编号  年龄 性别       注册时间
0  A1  272017-10-19
1  A2  432018-03-03
2  A3  192007-09-03
3  A4  352019-05-21

指定行索引

导入本地文件,行索引默认是从0开始的,也可以通过设置index_col参数来设置

df = pd.read_excel(r'C:\Users\GQ\Desktop\dir\text.xlsx', sheet_name=0, index_col=1)
# 这里可以通过改变参数值来观察结果
# index_col表示.xlsx文件中的第几列做行索引,默认从0开始计数
print(df)

    编号 性别       注册时间
年龄                  
27  A1  男 2017-10-19
43  A2  女 2018-03-03
19  A3  男 2007-09-03
35  A4  女 2019-05-21

指定列索引

将本地文件导入DataFrame时,默认使用源数据表的第一行作为列索引,也可以通过设置header参数来设置列索引。header参数值默认为0,即用第一行为列索引:也可以是其他行,只需要传入具体的那一行即可,也可以使用默认从0开始的数作为列索引,一下通过修改三次header的值,感受一下输出结果的不同

df = pd.read_excel('text.xlsx', sheet_name=0, header=0)
print(df)
   编号  年龄 性别  注册时间
0  A1  	542017-01-05
1  A2  	202017-02-03
2  A3  	102017-03-06
3  A4  	352017-04-08
df = pd.read_excel('text.xlsx', sheet_name=0, header=1)
print(df)
   A1  542017-01-05 
0  A2  202017-02-03
1  A3  102017-03-06
2  A4  352017-04-08
df = pd.read_excel('text.xlsx', sheet_name=0, header=None)
print(df)

    0   1      2                 3
0  编号  年龄  性别            注册时间
1  A1    542017-01-05 00:00:00
2  A2    202017-02-03 00:00:00
3  A3    102017-03-06 00:00:00
4  A4    352017-04-08 00:00:00

指定导入列

当本地文件列数太多,而我们又不需要那么多列时,可以通过设置usecols参数来指定要导入的列

df = pd.read_excel('text.xlsx', usecols=2)  
# usecols指定的数就是从第一列开始,打印到指定数结束,这里别忘了,计算机是从0开始的
print(df)
   编号  年龄 性别
0  A1  541  A2  202  A3  103  A4  35

当然,也可以给usecols传入一个列表指定,就像切片一样,但是这里切的左右都有,都会输出打印

df = pd.read_excel('text.xlsx', usecols=[1, 2])
print(df)
   年龄 性别
0  541  202  103  35

导入.csv文件

与导入xlsx文件差不多,python导入csv文件的方法是read_csv()

导入文件

df = pd.read_csv('text2.csv', encoding='utf-8')
print(df)

两者操作差距不大,都是指定参数就可以,我电脑上显示不兼容,因为平时一般用的都是wps,所以这个问题暂时就不解决,直接跳过(嘿嘿,原谅我又偷懒了)

导入.txt文件

在Excel中,可以通过菜单栏的数据–获取外部数据–自文本,导入我们需要的txt文件

在Python中使用read_table()方法, read_table()是将利用分隔符分开的文件导入DataFrame的通用函数。它不仅可以导入txt文件,也可以导入csv文件

df = pd.read_table('text2.txt')
print(df)
编号  年龄 性别  注册时间
A1   542017-01-05
A2   202017-02-03             
A3   102017-03-06
A4   352017-04-08

熟悉数据

利用head预览前几行

当数据表中中包含数据行数过多时,而我们又想看一下每一列都是什么样的数据时,就可以把数据表中前几行数据显示出来查看。

在python中,当一个文件导入后,可以用head()方法来控制要显示哪些行,只需要在head后面的 括号中输入要展示行数即可,默认展示前5行

df = pd.read_csv('train-pivot.csv', encoding='GBK')
print(df)
    用户ID 客户分类    区域 是否省会  7月销量  8月销量  9月销量
0  59224   A类  一线城市    是     6    20     0
1  55295   B类  三线城市    否    37    27    35
2  46035   A类  二线城市    是     8     1     8
3   2459   C类  一线城市    是     7     8    14
4  22179   B类  三线城市    否     9    12     4
# 总共就5行数据,我就不单独打印head()方法了
df = pd.read_csv('train-pivot.csv', encoding='GBK')
print(df.head(2))
    用户ID 客户分类    区域 是否省会  7月销量  8月销量  9月销量
0  59224   A类  一线城市    是     6    20     0
1  55295   B类  三线城市    否    37    27    35

利用shape获取数据表的大小

在python中获取数据表的行,列数利用的是shape方法

df = pd.read_csv('train-pivot.csv', encoding='GBK')
print(df.shape)
(6, 7)

shape方法会以元组的形式返回行,列数,上面代码中的(6,7)代表df中有6行7列数据。这里需要注意的是,python中利用shape方法获取行数和列数时不会把行索引和列索引计算在内,而Excel中是把行索引和列索引计算在内的

利用info获取数据类型

熟悉数据的第二点就是看一下数据类型,不同的数据类型的分析思路是不一样的,比如数值类型的数据可以求平均值,但是字符串类型的数据就不可以

在Excel中,选中数据表的文本框,选项卡工具栏就会出现数据类型

在python中我们可以利用info()方法查看数据表中的数据类型,而且不需要一列一列的查看,在调用info()方法以后就会输出整个列表中所有的数据类型。

df = pd.read_csv('train-pivot.csv', encoding='GBK')
print(df.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 7 columns):
用户ID    6 non-null int64
客户分类    6 non-null object
区域      6 non-null object
是否省会    6 non-null object
7月销量    6 non-null int64
8月销量    6 non-null int64
9月销量    6 non-null int64
dtypes: int64(4), object(3)
memory usage: 464.0+ bytes

通过info()方法可以看出表df的行索引index是0-5,总共7columns,分别是用户ID,客户分类,区域(这三者是object类型),7月销量,8月销量,9月销量(这三者是int64类型)共占用内存464bytes

利用describe获取数值分布情况

熟悉数据的第三点就是掌握数值得分布情况,即均值是多少,最值是多少,方差及分位数分别是多少

在Excel中计算数据可以在选项卡功能中完成,这里不再赘述(书上有写)

在python中只需要利用describe()方法就可以获得所有数值类型字段的分布值

df = pd.read_csv('train-pivot.csv', encoding='GBK')
print(df.describe())
               用户ID       7月销量       8月销量       9月销量
count      6.000000   6.000000   6.000000   6.000000
mean   34624.833333  18.166667  14.666667  19.333333
std    22350.565527  16.630294   9.458682  21.369761
min     2459.000000   6.000000   1.000000   0.000000
25%    22273.500000   7.250000   9.000000   5.000000
50%    34296.000000   8.500000  16.000000  11.000000
75%    52980.000000  30.000000  20.000000  29.750000
max    59224.000000  42.000000  27.000000  55.000000
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值