首页 > 其他分享 >Numpy&Pandas:pandas库的安装,不同对象的建立,文件的导入和了解数据

Numpy&Pandas:pandas库的安装,不同对象的建立,文件的导入和了解数据

时间:2024-07-26 23:54:00浏览次数:12  
标签:beijing data NaN Pandas 索引 pd Numpy pandas population

目录

前言

一、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

标签:beijing,data,NaN,Pandas,索引,pd,Numpy,pandas,population
From: https://blog.csdn.net/weixin_65047977/article/details/140726396

相关文章

  • Python——Pandas(第二讲)
    文章目录变量类型的转换Pandas支持的数据类型在不同数据类型间转换建立索引新建数据框时建立索引读入数据时建立索引指定某列为索引列将索引还原变量列引用和修改索引引用索引修改索引修改索引名修改索引值更新索引Series的索引和切片DataFrame的索引和切片选择列按......
  • 深度学习与图像识别(numpy2)
    获取numpy属性首先,我们通过Numpy中的一个方法arange(n),生成0到n-1的数组。np.arange(15)返回的结果是array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14)  然后,再通过Numpy中的reshape(row,column)方法,自动构架一个多行多列的array对象。 a=np.arange(15).reshape(3,5)#代表3行......
  • 深度学习与图像识别学习笔记day2(numpy数组的方法)
    创建numpy数组importnumpyasnpnparray=np.array([iforiinrange(10)])print(nparray)创建数值都为0的数组importnumpyasnpa=np.zeros(10)print(a)得到的结果0都有一个小数点,调用a.dtype创建的向量类型为dtype(‘float64‘)创建整数型a=np.zeros(10,d......
  • numpy 中用最少内存对上三角元素求和的最快方法
    我需要对对称矩阵进行类型求和i<j这相当于对矩阵的上三角元素求和,不包括对角线。给定A对称NxN数组,最简单的解决方案是np.triu(A,1).sum()但是我想知道是否存在需要更少内存的更快方法。看起来(A.sum()-np.diag(A).sum())/2......
  • 数据清洗与预处理:使用 Python Pandas 库
    数据清洗与预处理:使用PythonPandas库1.简介数据清洗与预处理是数据科学和机器学习中必不可少的步骤。它涉及识别和处理原始数据中的错误、不一致和缺失值,以确保数据的质量和可靠性。Python的Pandas库提供了强大的工具,简化了数据清洗和预处理的过程。2.数据加载与探索......
  • 【Python自动化办公】用Pandas库自动化操作Excel表格,从读取、写入到数据处理和分析
    文末免费赠送精品编程资料~~前言Python的第三方Pandas库是数据处理和分析中的利器,其强大的功能可以帮助我们轻松地对Excel表格进行自动化操作。接下来,我们将介绍九个用Pandas库操作Excel的编程例子,并且每个例子都会涉及不同的知识点,确保全面掌握这个主题。1.读取和写入E......
  • numpy和tensor
    通过list生成tensor生成及存储方式#张量生成从pyhton中的list生成x=torch.tensor([1,2,3])print(x)print(x.dtype)#半精度x=torch.tensor([1,2,3]).to(torch.float16)print(x.dtype)#全精度x=torch.tensor([1,2,3]).to(torch.float32)print(x.dtype)......
  • 如何合并行中的值,替换 pandas 中的 nan 值
    我正在对数据框进行一些操作:dfNodeInterfaceSpeedcarrier1-May9-May2-Jun21-JunServer1internet110ATT20305090Server1wan3.020ComcastNaNNaN......
  • 写入羽毛或镶木地板文件格式时出现 Geopandas 错误 - UnsupportedGEOSVersionError:“i
    当尝试将pandas地理数据帧“gdf”写入羽毛文件格式时,我收到错误消息UnsupportedGEOSVersionError:The“iso”选项至少需要GEOS3.10.0gdf.to_feather("California_Buildings.feather")我环境中当前的GEOS版本是3.12.1应该满足这个要求...尽管我没有......
  • Numpythonic 方式从所需的时间步长和窗口大小构造窗口向量
    给定参数timestep=2window_size=3我已经展平了大小为9的时间序列向量。内容是:arr=np.array([1,2,3,4,5,6,7,8,9])如何使用这些参数重塑/构造窗口时间序列?我希望输出具有形状unknown,window_size)所以,它的输出将是这样的矩阵:windowed_arr=np......