目录
七.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 = '列名',也可以是整数或者列表。 |
usecols | int或list类型,默认为None,表示需要读取所有列。 |
squeeze | boolean,默认为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")