Numpy&Pandas:pandas库的安装,不同对象的建立,文件的导入和了解数据(纯干货!无废话!)

目录

前言

一、Pandas库的安装

二、不同对象的建立

1.Series对象的创建

1.用index方法指定索引

2.在创建的时候就指定索引

3.使用字典的方式创建

4.将一个常量与index一起传入创建

5.输出值和索引

2.DataFrame对象的创建

1.不指定列名则以键当列名 行索引为默认值

2.columns指定列名

3.指定索引名

4.打印索引,值和列名

三、读取文件

1.csv文件

2.txt文件

四、了解数据

1.head() 和 tail()

2.info()

3.shape

4.describe()


前言

        Pandas 包是基于 Python 平台的数据管理利器,已经成为了 Python 进行数据分析和挖掘时的数据基础平台和事实上的工业标准。

一、Pandas库的安装

  • 按win+r打开命令提示符,输入cmd,按回车进入。输入下面的代码,安装pandas库和jupyter notebook库
  • 若安装不了或者pip想换源的可以看:python-快速上手爬虫-CSDN博客
pip install pandas
pip install jupyter notebook
  • 安装好了之后在pycharm的Terminal处输入:
jupyter notebook
  • 会跳转到网页打开jupyter,找到自己python代码所在的文件夹,再在右上角新建文件进行操作。

二、不同对象的建立

先导入pandas和numpy库

import pandas as pd
import numpy as np

1.Series对象的创建

# 一维数组的创建
data = pd.Series([2,3,4,1,4,5])  
data = data.drop_duplicates()   # 对数据进行去重 
data                            # 系统会给一个默认的从0开始的索引

输出:

0    2
1    3
2    4
3    1
5    5
dtype: int64

1.用index方法指定索引

data = pd.Series([12,23,4,1,5,6])
data.index = [2,3,4,5,6,7]        # 用index方法指定索引
data

输出: 索引和数值位数必须对应,不然会报错

2    12
3    23
4     4
5     1
6     5
7     6
dtype: int64

2.在创建的时候就指定索引

# 在创建的时候就指定索引
data = pd.Series([13,4,5,6,6,7],index = [1,2,3,4,5,6])
data = data.drop_duplicates()    # 值查重
data1 = pd.Series([2,3,4,5,6,7],index = list('acbdds'))
data1 = data1[~data1.index.duplicated()]  # 行索引查重 无'~'就显示哪一行重复 有'~'就删除重复行 

data,data1

输出:

(1    13
 2     4
 3     5
 4     6
 6     7
 dtype: int64,
 a    2
 c    3
 b    4
 d    5
 s    7
 dtype: int64)

3.使用字典的方式创建

  • 使用字典的方式创建
    # 使用字典的方式创建
    population_dict={'sh':2800,'bj':3000,'gz':1500,'sz':1200}
    pp=pd.Series(population_dict)    # 将字典转换成一维数组  键当索引 值当值
    pp

    输出:将字典转换成一维数组 ,键当索引,值当值

    sh    2800
    bj    3000
    gz    1500
    sz    1200
    dtype: int64

  • 传入由字典创建的数组 并且指定索引 取交集 不存在则输出NaN
    # 传入由字典创建的数组 并且指定索引 取交集 不存在则输出NaN
    ppp = pd.Series(pp,index = ['bj','xa','hf','sz'])   
    ppp

    输出:

    bj    3000.0
    xa       NaN
    hf       NaN
    sz    1200.0
    dtype: float64

4.将一个常量与index一起传入创建

# 将一个常量与index一起传入创建
data = pd.Series(10,index =list('abcd'))   # 数组中所有的值都是10    
data

输出:

a    10
b    10
c    10
d    10
dtype: int64

5.输出值和索引

2    12
3    23
4     4
5     1
6     5
7     6

print(data.values)   # 输出数组的值
print(data.index)    # 输出数组的索引

输出:

[12 23  4  1  5  6]
Index([2, 3, 4, 5, 6, 7], dtype='int64')

2.DataFrame对象的创建

  • 可以被看做是由 Series 组成的字典
pp = pd.Series({'beijing':3000,'shanghai':1200,'guangzhou':1800})
area = pd.Series({'beijing':300,'tianjin':180,'guangzhou':200})   # 对两列数据的索引取并集 值不存在则为NaN
citys = pd.DataFrame({'area':area,'population':pp})     # 创建列名
citys  

输出:

	        area	population
beijing	    300.0	3000.0
guangzhou	200.0	1800.0
shanghai	NaN	    1200.0
tianjin	    180.0	NaN

1.不指定列名则以键当列名 行索引为默认值

population_dict={'beijing':3000,'tianjin':1200,'guangzhou':1800}
area_dict={'beijing':300,'shanghai':180,'guangzhou':200}
data=pd.DataFrame([population_dict,area_dict])  # 不指定列名则以键当列名 行索引为默认值 
data

输出:

	beijing	   tianjin	 guangzhou	shanghai
0	 3000	    1200.0	  1800	     NaN
1	 300	    NaN	      200	     180.0

2.columns指定列名

pp = pd.Series({'beijing':3000,'shanghai':1200,'guangzhou':1800})
pp1 = pd.DataFrame(pp,columns = ['population'])  # columns指定列名
print(pp1.loc['beijing'])  # 按行的索引取值
print(pp1.iloc[0])         # 按行的索引值取值
pp1

输出:

population    3000
Name: beijing, dtype: int64
population    3000
Name: beijing, dtype: int64

	     population
beijing	    3000
shanghai	1200
guangzhou	1800

3.指定索引名

pp2 = pd.DataFrame([pp,area],index = ['population','area'])  # 指定索引名
print(pp2['beijing'])  # 取单列 
print(pp2[['shanghai','tianjin']]) # 取多列
pp2

输出:

population    3000.0
area           300.0
Name: beijing, dtype: float64
            shanghai  tianjin
population    1200.0      NaN
area             NaN    180.0


	        beijing	  shanghai	guangzhou	tianjin
population	 3000.0	   1200.0	 1800.0	     NaN
area	     300.0	   NaN	     200.0	     180.0

4.打印索引,值和列名

	        area	population
beijing	    300.0	3000.0
guangzhou	200.0	1800.0
shanghai	NaN	    1200.0
tianjin	    180.0	NaN


print(citys.index)
print(citys.values)
print(citys.columns)   # 打印列名

输出:

Index(['beijing', 'guangzhou', 'shanghai', 'tianjin'], dtype='object')
[[ 300. 3000.]
 [ 200. 1800.]
 [  nan 1200.]
 [ 180.   nan]]
Index(['area', 'population'], dtype='object')

三、读取文件

基本读的都是csv文件和txt文件

1.csv文件

  • 文件的路径:./表示同级目录下的文件;../表示上机目录下的文件
# 读文件 基本都是csv文件
# header = None 不把第一行读成列名   names 指定读取的列名
stu_df = pd.read_csv('./students.csv',header = None,names =['id','name','age','gender','clazz'])
stu_df

输出:太长的数据一般只会显示头尾五行


            id	name	age	gender	clazz
0	1500100001	施笑槐	22	女	    文科六班
1	1500100002	吕金鹏	24	男	    文科六班
2	1500100003	单乐蕊	22	女	    理科六班
3	1500100004	葛德曜	24	男	    理科三班
4	1500100005	宣谷芹	22	女	    理科五班
...	...	...	...	...	...
995	1500100996	厉运凡	24	男	    文科三班
996	1500100997	陶敬曦	21	男	    理科六班
997	1500100998	容昆宇	22	男	    理科四班
998	1500100999	钟绮晴	23	女	    文科五班
999	1500101000	符瑞渊	23	男	    理科六班

1000 rows × 5 columns

2.txt文件

  • 读取txt文件需要指定分隔符,文件里各列以相同的方式进行分隔
# 读取txt文件 需要指定分隔符 这里读取的是之前爬虫爬取的豆瓣小说的信息
book_df = pd.read_csv('./novel.txt',header=None,sep ='#',names=["book_name","price","y","publish","author","star"])

输出:

	book_name	    price	y	    publish	            author	            star
0	食南之徒	        56.00	2024-4	湖南文艺出版社	    马伯庸	            8.3
1	太白金星有点烦	45.00	2023-6	湖南文艺出版社	    马伯庸	            9.0
2	长安的荔枝	    45.00	2022-10	湖南文艺出版社	    马伯庸	            8.5
3	额尔古纳河右岸	32.00	2019-6	人民文学出版社	    迟子建	            9.1
4	活着	        20.00	2012-8	作家出版社	        余华	            9.4
...	...	...	...	...	...	...
193	庆余年·壹	    28.00	2008-7	中国友谊出版公司	    猫腻	            8.0
194	月亮和六便士	    15.00	2006-8	上海译文出版社	    [英] 毛姆/傅惟慈	    9.0
195	孤岛的来访者	    49.00	2023-4	新星出版社	        [日] 方丈贵惠/穆迪	7.8
196	安南想象	        78	    2024-5	上海文艺出版社	    朱琺	            8.6
197	黄金时代	        35.00	2017-4	北京十月文艺出版社   王小波	            8.7

198 rows × 6 columns

 
四、了解数据

1.head() 和 tail()

  • head() 浏览前几条
    book_df.head(10)  # 浏览前几条

    输出:

    	book_name	        price	y	    publish	            author	                star
    0	食南之徒	            56.00	2024-4	湖南文艺出版社	    马伯庸	                8.3
    1	太白金星有点烦	    45.00	2023-6	湖南文艺出版社	    马伯庸	                9.0
    2	长安的荔枝	        45.00	2022-10	湖南文艺出版社	    马伯庸	                8.5
    3	额尔古纳河右岸	    32.00	2019-6	人民文学出版社	    迟子建	                9.1
    4	活着	            20.00	2012-8	作家出版社	        余华	                9.4
    5	明亮的夜晚	        52	    2023-8	台海出版社	        [韩]崔恩荣/叶蕾	        9.0
    6	绝叫	            58.00	2020-7	北京联合出版公司	    [日] 叶真中显/林佩瑾	    8.9
    7	秋园	            38.00	2020-6	北京联合出版公司	    杨本芬	                9.0
    8	最后一个死去的女孩   69.00	2024-4	北京联合出版公司	    [美] 哈里·多兰/仲召明	8.2
    9	十八岁出门远行	    45	    2024-3	江苏凤凰文艺出版社	余华	                7.4
  • tail()浏览最后几条
    book_df.tail(10)  # 浏览最后几条

    输出:

    	book_name	        price	y	    publish	        author	                    star
    188	小王子	            22.00	2003-8	人民文学出版社	[法] 圣埃克苏佩里	        9.1
    189	一桩事先张扬的凶杀案	25.00	2013-6	南海出版公司	    [哥伦比亚] 加西亚·马尔克斯	8.7
    190	请记得乐园	        59	    2024-4	人民文学出版社	那多	                    6.6
    191	未来学大会	        42.00	2021-8	译林出版社	    [波] 斯坦尼斯瓦夫·莱姆       9.0
    192	百年孤独	            55.00	2017-8	南海出版公司	    [哥伦比亚] 加西亚·马尔克斯	9.5
    193	庆余年·壹	        28.00	2008-7	中国友谊出版公司	猫腻	                    8.0
    194	月亮和六便士	        15.00	2006-8	上海译文出版社	[英] 毛姆/傅惟慈	            9.0
    195	孤岛的来访者	        49.00	2023-4	新星出版社	    [日] 方丈贵惠/穆迪	        7.8
    196	安南想象	            78	    2024-5	上海文艺出版社	朱琺	                    8.6
    197	黄金时代	            35.00	2017-4	北京十月文艺出版 王小波	                    8.7

2.info()

# 在pandas里可以将object看作是str
book_df.info()   # 查看各列的数据个数和数据类型 
                 # 可以用来判断是否有空数据 例如star里的197 数据总数应为198 
                 # 所以star里就有个空数据NaN

输出:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 198 entries, 0 to 197
Data columns (total 6 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   book_name  198 non-null    object 
 1   price      198 non-null    object 
 2   y          198 non-null    object 
 3   publish    198 non-null    object 
 4   author     198 non-null    object 
 5   star       197 non-null    float64
dtypes: float64(1), object(5)
memory usage: 9.4+ KB

3.shape

book_df.shape    # 数据的维度 以及各维度的值

输出:数据的维度 以及各维度的值

(198, 6)

4.describe()

book_df.describe()  # 了解数据里数值的分布情况

输出:了解数据里数值的分布情况

        star
count	197.000000
mean	8.580203
std	    0.669575
min	    5.800000
25%	    8.200000
50%    	8.700000
75%	    9.100000
max	    9.700000
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

吃什么芹菜卷

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

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

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

打赏作者

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

抵扣说明:

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

余额充值