七.pandas处理第三方数据

目录

七.pandas处理第三方数据

1.Pandas读取文件

1.1 csv文件操作

1.1.1 CSV文件读取

自定义索引(inde_col)

查看每一列的dtype

更改文件标头名(列的标签)

跳过指定的行数

1.1.2 CSV文件写入

1.2 Excel文件操作

1.2.1 Excel文件读取

1.2.2 Excel文件写入

1.3 SQL操作

1.3.1 MySQL读取

index_col 属性(充当行标签)

将数据写入Excel

2.索引及基本操作

2.1 操作索引

2.2 添加,删除,插入


七.pandas处理第三方数据


1.Pandas读取文件

当使用 Pandas 做数据分析的时,需要读取事先准备好的数据集,这是做数据分析的第一步。

Panda 提供了多种读取数据的方法:

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

  • read_json() 用于读取 json 文件

  • read_sql() 读取 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)
​
​
------------或者----------
import pandas as pd
file=r'E:/././student.csv'
data=pd.read_csv(file,encoding='utf-8')
print(data)
​
自定义索引(inde_col)

在 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)
-----------
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参数来删除它。

--加上header=0参数,就会删除原有的标头名.

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接受一个列表,省略指定行数的数据,从尾部最后一行开始。
#sheet_name=        这里也可以指定索引.(读取表  0   1)
​
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('输出成功')
--------------------或者---------------
创建文件对像,直接写入.(类似.csv文件写入)

1.3 SQL操作

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

1.3.1 MySQL读取

---首先要连接mysql

--不需要创建游标了,直接读取.

import pandas as pd
import pymysql
​
coon = pymysql.connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password=" ",
    db="库名"
)
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=" ",
    db="库名"
)
​
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=" ",
    db="库名"
)
​
sql_one = "select * from house"
data = pd.read_sql(sql_one,con=coon)
​
#创建ExcelWrite对象.
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())
-----------------------------------
​
# 默认值行索引
print(df.reset_index().head())
-----------------------------------
​
print(df.columns)
# 修改行列名
# 单个进行修改
print(df.rename(columns={"color": "颜色"},index={0: "第一列"}))
​
-----------------------------------
​
df.columns  #返回列表,列标签.
# 整体修改,上面复制过来直接进行修改
# 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="xxx")

  • 37
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

金灰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值