首页 > 其他分享 >【pandas基础】--数据读取

【pandas基础】--数据读取

时间:2023-05-04 17:01:30浏览次数:48  
标签:读取 -- df china pd csv pandas population

数据读取是第一步,只有成功加载数据之后,后续的操作才有可能。

pandas可以读取和导入各种数据格式的数据,如CSV,Excel,JSON,SQL,HTML等,不需要手动编写复杂的读取代码。

1. 各类数据源

pandas提供了导入各类常用文件格式数据的接口,这里介绍3种最常用的加载数据的接口。

1.1 从 CSV 文件读取数据

读取csv文件的接口:read_csv()

import pandas as pd

# 此csv中包含一些中国人口的统计信息
df = pd.read_csv("/path/to/china-population.csv")

df.head() # 显示前5条数据

image.png

1.2 从 excel 文件读取数据

读取excel文件的接口:read_excel ()
读取excel文件时,默认读取第一个sheet中的数据。

import pandas as pd

# 此excel中的数据与上面csv文件中的一样
df = pd.read_excel("/path/to/china-population.xlsx")

df.head() # 显示前5条数据

image.png

1.3 从网络中读取数据

除了从本地文件中读取数据之外,read_csvread_excel也可以直接从URL读取数据。
比如,上面的csv文件和excel文件可以从下面的地址下载。
http://databook.top:8888/pandas/china-population.csv
http://databook.top:8888/pandas/china-population.xlsx

可以直接将URL传给 read_csvread_excel,不用下载保存本地。

import pandas as pd

df = pd.read_csv("http://databook.top:8888/pandas/china-population.csv")
df_excel = pd.read_excel("http://databook.top:8888/pandas/china-population.xlsx")

2. 不同分隔符

csv 文件中默认用逗号,分隔不同的字段,不过,也有很多csv文件不用逗号分隔,用其他生僻的符号来分隔。

import pandas as pd

df = pd.read_csv("http://databook.top:8888/pandas/china-population-sep.csv")
df.head()

image.png
文件china-population-sep.csv|来分隔不同的字段,直接读取的话,变成只有一个字段。

这时,要明确设置分隔符。

import pandas as pd

df = pd.read_csv("http://databook.top:8888/pandas/china-population-sep.csv", sep="|")
df.head()

image.png
这样就得到了正确的数据结构。

3. 设置列名称

除了可以设置分隔符之外,读取数据时,也可以设置列的名称。
上面的例子中,列的名称都是字母的缩写,读取文件时可以替换成中文名称。

import pandas as pd

df = pd.read_csv(
    "http://databook.top:8888/pandas/china-population-sep.csv",
    sep="|",
    names=["年份数字", "年份", "指标编码", "指标名称", "人口数"],
)
df.head()

image.png

通过names参数设置列的名称,names参数是个列表,其中元素的个数一般与列的数目保持一致。
如果names中元素个数少于列的数目,那么多出来的列会作为索引(关于索引index,后续会详细介绍)。

import pandas as pd

df = pd.read_csv(
    "http://databook.top:8888/pandas/china-population-sep.csv",
    sep="|",
    names=["指标编码", "指标名称", "人口数"],
)
df.head()

image.png

如果 names中元素个数多于列的数目,多出来的元素作为新增的空白列。

import pandas as pd

df = pd.read_csv(
    "http://databook.top:8888/pandas/china-population-sep.csv",
    sep="|",
    names=["年份数字", "年份", "指标编码", "指标名称", "人口数", "列名称", "列名称2"],
)
df.head()

image.png

上面的例子中,我们应该发现了一个问题,设置 names作为新的列名称之后,原有的列名称被当成了实际的数据。
也就是:
image.png

设置新的列名称时,如果数据中包含列名称的话,需要忽略掉这个名称。
设置 header=0,忽略作为标题的第一行。
如果文件本来就没有标题的话,设置 header=None

import pandas as pd

df = pd.read_csv(
    "http://databook.top:8888/pandas/china-population-sep.csv",
    sep="|",
    header=0,
    names=["年份数字", "年份", "指标编码", "指标名称", "人口数"],
)
df.head()

image.png

4. 随机生成数据

pandas支持从很多数据源读取数据,不过,有时候我们只想尝试尝试 pandas中的一些方法,并不想创建数据源。

这时,可以通过 numpy包创建一个随机的二维矩阵,直接将这个二维矩阵的数据导入 pandas即可。
下面的例子创建了一个10行3列的数据集。

import pandas as pd
import numpy as np

data = np.random.rand(10,3)
df = pd.DataFrame(data, columns=["data1", "data2", "data3"])
df.head()

image.png

通过临时创建的随机数据,可以尝试 pandas提供的各类接口。

5. 总结回顾

本篇了主要介绍了数据的读取方法,重点介绍的是 csv 文件的读取方式,因为这是最常用的数据源。
其他数据源的读取方式也大同小异,各种数据源的差异会体现在不同接口的参数上。

本文所用到的数据:

  1. http://databook.top:8888/pandas/china-population.csv
  2. http://databook.top:8888/pandas/china-population-sep.csv
  3. http://databook.top:8888/pandas/china-population.xlsx

本文关联的微信视频号短视频:
pandas01-数据读取.png

标签:读取,--,df,china,pd,csv,pandas,population
From: https://www.cnblogs.com/wang_yb/p/17371731.html

相关文章

  • C++获取阿里巴巴1688中国站店铺详情 API 接口返回值示例说明
    ​C++(cplusplus)是一种计算机高级程序设计语言,由C语言扩展升级而产生,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。......
  • 使用篇丨链路追踪(Tracing)很简单:链路拓扑
    作者:涯海最近一年,小玉所在的业务部门发起了轰轰烈烈的微服务化运动,大量业务中台应用被拆分成更细粒度的微服务应用。为了迎接即将到来的双十一大促重保活动,小玉的主管让她在一周内梳理出订单中心的全局关键上下游依赖,提前拉通各方对齐重保方案。这个任务可愁坏了小玉,平时她只与直接......
  • Python保留两位小数五种常用的方法!
    在Python中,保留两位小数是我们经常会碰到的问题,也是比较常见的需求之一。那么Python中如何保留两位小数?Python保留两位小数的方法有很多种,具体请看下文。1、使用字符串格式化大部分语言都可以使用字符串格式化的方法来实现保留两位小数,Python也不例外。a=12.345......
  • Curling 2.0
     G-Curling2.0OnPlanetMM-21,aftertheirOlympicgamesthisyear,curlingisgettingpopular.Buttherulesaresomewhatdifferentfromours.Thegameisplayedonanicegameboardonwhichasquaremeshismarked.Theyuseonlyasinglestone.The......
  • pytest的fixture
    1什么是[email protected]_fruit():returnFruit("apple")如上,用@pytest.fixture装饰的函数就是fixture2fixture的作用我的理解是为test函数的运行提供数据、必要的环境支持等3fixture的定义与使用fixture直接用于test函数@pytest.fixturedefmysq......
  • 简单了解javabean
    来自你的消息:javabean怎么理解来自ChatAI的消息:JavaBean是指符合一定规范的Java类,用于封装数据。JavaBean一般包含私有属性、公有getter/setter方法和无参构造方法。JavaBean的主要目的是提供一种规范化的方式来创建可重用的组件,这些组件可以用于在Java程序中进行数据封装、......
  • 06、信息管理
    一、信息分类和处理开发保护信息的安全控制和政策的必要基本步骤是,必须根据信息资产的重要性和信息信息安全受到破坏时对组织的影响,对组织的所有信息资产进行分类。此外,组织需要有明确的程序,以确保在信息的整个生命周期内保持该类型的信息与其分类之间的联系,并且这个程序应指明如......
  • 分布式有状态服务的调度技术预研报告
    1.研究项目背景平台版本建设中,为了充分发挥视频分析引擎性能,需要针对业务特点,现有的分布式调用方式无法满足需求,需要研究分布式服务的有状态调用实现。2.技术现状分析2.1分布式有状态服务调度技术的发展历程固定分配最初的分布式有状态服务调度技术采用固定分配的方式,......
  • Me and My Girlfriend - 手工爆库
    主机发现sudonmap-sT--min-rate10000-p-xx.xx.xx.xx-oAnmapscan/portssudonmap-sT-sC-sV-O-pxx.xx.xx.xx-oAnmapscan/detailsudonmap-sU--top-portsxx.xx.xx.xx-oAnmapscan/udp sudonmap--script=vuln-p22,80xx.xx.xx.xx-oAnmapscan/vuln访......
  • MFC-CListCtrl-SendMessage获取项目总数
     intcount=(int)::SendMessage(hWnd4,LVM_GETITEMCOUNT,(WPARAM)0,(LPARAM)0);//获取项目总数/*参数4和参数4必须为0返回值:返回项目总数*/str.Format(_T("项目总数=%d\r\n"),count);OutputDebugString(str);    ......