当前位置:   article > 正文

pandas的数据读入_pandas读取数据

pandas读取数据

1 Pandas读取文件

当使用 Pandas 做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步。Panda 提供了多种读取数据的方法:

  • read_csv() 用于读取文本文件

  • read_json() 用于读取 json 文件

  • read_sql_query() 读取 sql 语句的

1.1 csv文件操作

CSV 又称逗号分隔值文件,是一种简单的文件格式,以特定的结构来排列表格数据。 CSV 文件能够以纯文本形式存储表格数据,比如电子表格、数据库文件,并具有数据交换的通用格式。CSV 文件会在 Excel 文件中被打开,其行和列都定义了标准的数据格式。

将 CSV 中的数据转换为 DataFrame 对象是非常便捷的。和一般文件读写不一样,它不需要你做打开文件、读取文件、关闭文件等操作。相反,您只需要一行代码就可以完成上述所有步骤,并将数据存储在 DataFrame 中。

1.1.1 CSV文件读取

import pandas as pd
df = pd.read_csv("./number_data/student.csv", encoding="utf-8")
print(df)
  • 自定义索引

    在 CSV 文件中指定了一个列,然后使用index_col可以实现自定义索引。

import pandas as pd
df = pd.read_csv("./number_data/student.csv", encoding="utf-8", index_col=["Name"])
print(df)
  • 查看每一列的dtype
import pandas as pd
import numpy as np
​
# 转换salary为float类型
df = pd.read_csv("./number_data/student.csv", encoding="utf-8", dtype={'Salary': np.float64})
print(df.dtypes)
  • 更改文件标头名

    使用 names 参数可以指定头文件的名称。

import pandas as pd
​
df = pd.read_csv("./number_data/student.csv", encoding="utf-8", names=["a","b","c","d","e"])
print(df)

文件标头名是附加的自定义名称,但是您会发现,原来的标头名(列标签名)并没有被删除,此时您可以使用header参数来删除它。

import pandas as pd
​
df = pd.read_csv("./number_data/student.csv", encoding="utf-8", names=["a", "b", "c", "d", "e"], header=0)
print(df)
  • 跳过指定的行数

    skiprows参数表示跳过指定的行数。

import pandas as pd
​
df = pd.read_csv("./number_data/student.csv", encoding="utf-8", skiprows=1)
print(df)

1.1.2 CSV文件写入

Pandas 提供的 to_csv() 函数用于将 DataFrame 转换为 CSV 数据。如果想要把 CSV 数据写入文件,只需向函数传递一个文件对象即可。否则,CSV 数据将以字符串格式返回。

import pandas as pd
​
data = {'Name': ['Smith', 'Parker'], 'ID': [101, 102], 'Language': ['Python', 'JavaScript']}
info = pd.DataFrame(data)
​
csv_data = info.to_csv("./number_data/student.csv")

1.2 Excel文件操作

Excel 是由微软公司开发的办公软件之一,它在日常工作中得到了广泛的应用。在数据量较少的情况下,Excel 对于数据的处理、分析、可视化有其独特的优势,因此可以显著提升您的工作效率。但是,当数据量非常大时,Excel 的劣势就暴露出来了,比如,操作重复、数据分析难等问题。Pandas 提供了操作 Excel 文件的函数,可以很方便地处理 Excel 表格。

1.2.1 Excel文件读取

  • 如果您想读取 Excel 表格中的数据,可以使用 read_excel() 方法

pd.read_excel(io, sheet_name=0, header=0, names=None, index_col=None,
              usecols=None, squeeze=False,dtype=None, engine=None,
              converters=None, true_values=None, false_values=None,
              skiprows=None, nrows=None, na_values=None, parse_dates=False,
              date_parser=None, thousands=None, comment=None, skipfooter=0,
              convert_float=True, **kwds)
参数名称说明
io表示 Excel 文件的存储路径。
sheet_name要读取的工作表名称。
header指定作为列名的行,默认0,即取第一行的值为列名;若数据不包含列名,则设定 header = None。若将其设置 为 header=2,则表示将前两行作为多重索引。
names一般适用于Excel缺少列名,或者需要重新定义列名的情况;names的长度必须等于Excel表格列的长度,否则会报错。
index_col用做行索引的列,可以是工作表的列名称,如 index_col = '列名',也可以是整数或者列表。
usecolsint或list类型,默认为None,表示需要读取所有列。
squeezeboolean,默认为False,如果解析的数据只包含一列,则返回一个Series。
converters规定每一列的数据类型。
skiprows接受一个列表,表示跳过指定行数的数据,从头部第一行开始。
nrows需要读取的行数。
skipfooter接受一个列表,省略指定行数的数据,从尾部最后一行开始。
import pandas as pd
​
df = pd.read_excel('./number_data/student.xlsx', sheet_name="Sheet1")
print(df)

1.2.2 Excel文件写入

通过 to_excel() 函数可以将 Dataframe 中的数据写入到 Excel 文件。

import pandas as pd
​
# 创建DataFrame数据
info_website = pd.DataFrame({'name': ['张三', '李四', '王五', '赵六'],
                             'rank': [1, 2, 3, 4],
                             'language': ['PHP', 'C', 'PHP', 'Python'],
                             'url': ['www.zhangsan.com', 'c.lisi.net', 'www.wangwu.com', 'www.zhaoliu.com']})
# 创建ExcelWrite对象
writer = pd.ExcelWriter('website.xlsx')
info_website.to_excel(writer)
writer.save()
print('输出成功')

1.3 SQL操作

MySQL 作为数据记录和处理的常用工具之一 ,使用pandas对MySQL进行操作

1.3.1 MySQL读取

import pandas as pd
import pymysql
​
coon = pymysql.connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password="110120",
    db="12_class"
)
sql_one = "select * from house"
print(pd.read_sql(sql_one,con=coon))
​
sql_two = "select * from house where id > 10"
print(pd.read_sql(sql_two, con=coon))
  • index_col

import pandas as pd
import pymysql
​
coon = pymysql.connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password="110120",
    db="12_class"
)
​
sql_one = "select * from house"
data = pd.read_sql(sql_one, con=coon,index_col="house_five")
print(data)
  • 将数据写入Excel

import pandas as pd
import pymysql
​
coon = pymysql.connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password="110120",
    db="12_class"
)
​
sql_one = "select * from house"
data = pd.read_sql(sql_one,con=coon)
writer = pd.ExcelWriter('website.xlsx')
data.to_excel(writer)
writer.save()
print('输出成功')

2 索引及基本操作

索引(index)是 Pandas 的重要工具,通过索引可以从 DataFame 中选择特定的行数和列数,这种选择数据的方式称为“子集选择”。

2.1 操作索引

import pandas as pd
import numpy as np
​
df = pd.read_csv("./number_data/movie.csv")
print(df.head())
​
print(df.shape)
​
# 修改行索引
print(df.set_index("movie_title").head())
这里的set_index的方法是将我们令的行作为我们的行索引值

​
# 默认值行索引
print(df.reset_index().head())

​
print(df.columns)
# 修改行列名
# 单个进行修改
print(df.rename(columns={"color": "颜色"},index={0: "第一列"}))
​
# 整体修改
# df.columns = ['颜色', '姓名', 'num_critic_for_reviews', 'duration',
#               'director_facebook_likes', 'actor_3_facebook_likes', 'actor_2_name',
#               'actor_1_facebook_likes', 'gross', 'genres', 'actor_1_name',
#               'movie_title', 'num_voted_users', 'cast_total_facebook_likes',
#               'actor_3_name', 'facenumber_in_poster', 'plot_keywords',
#               'movie_imdb_link', 'num_user_for_reviews', 'language', 'country',
#               'content_rating', 'budget', 'title_year', 'actor_2_facebook_likes',
#               'imdb_score', 'aspect_ratio', 'movie_facebook_likes']
# print(df.head())
​
# 转化为列表之后修改
my_columns = list(df.columns)
my_columns[0] = "颜色色"
df.columns = my_columns
print(df.head())

2.2 添加,删除,插入

import pandas as pd
import numpy as np

df = pd.read_csv("./number_data/movie.csv")
print(df.head())
print(df.columns)

# 添加列
df["new_test"] = 0
print(df.head())

df["money"] = df["gross"] - df["budget"]
df.insert(0, "new_money", value=df["gross"] - df["budget"])

# 传入数据
df["new_test"] = df["actor_1_facebook_likes"] + df["actor_2_facebook_likes"]
print(df.head())

# 删除
print(df.drop(2, axis=0).head())   # 删除索引行
print(df.drop("color", axis="columns").head())  # 删除具体列

# 保存
df.iloc[:3, :].to_csv("./movie_new.csv")
df.iloc[:3, :].to_excel("./movie_new.xlsx",sheet_name="aaa")

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/643692
推荐阅读
相关标签
  

闽ICP备14008679号