import pandas as pd # 导入pandas包 df=pd.DataFrame() # 定义一个变量 变量类型是dataFrame df.to_excel("F:/桌面杂碎/output.xlsx") # 将变量保存成excel类型,保存地址为F盘 print("done!")
pandas中最重要和基础的就是dataFrame(数据帧)的使用
建立一个有数据的excel表格,使用dataFrame并用字典形式表示
import pandas as pd
# 导入pandas包
df=pd.DataFrame({'ID':[1,2,3],'Name':['LU','MU','lucy']})
# 定义一个变量 变量类型是dataFrame
df.to_excel("F:/桌面杂碎/output.xlsx")
# 将变量保存成excel类型,保存地址为F盘
print("done!")
set_index的用法 :用来更改索引信息,上面例子是excel自动生成的索引序号,我们可以通过该方法将ID的信息作为索引
import pandas as pd # 导入pandas包 df=pd.DataFrame({'ID':[1,2,3],'Name':['LU','MU','lucy']}) # 定义一个变量 变量类型是dataFrame a=df.set_index('ID') # df.to_excel("F:/桌面杂碎/output.xlsx") # 将变量保存成excel类型,保存地址为F盘 print(df) print(a)
在excel中,一个单元格既可以用行表示,也可以用列表示,在pandas中对应的就是序列表示“series”,series和python中的字典很像,字典里的key值相当于series的index值,字典里valu的值相当于series的data值。
import pandas as pd d = {"name": "luyi", 'age': 23, 'sex': "女"} print(d.keys()) print(d.values()) s1=pd.Series(d) 将字典类型的数据转变成series print(s1.index)
其他的写法:
m = ["name", 'age', 'sex'] n = ['luyi', 23, 'nv'] s2 = pd.Series(n, index=m)
s3 = pd.Series(['luyi', 23, 'nv'],["name", 'age', 'sex'])
将series类型的数据按照列形成excel数据
s1 = pd.Series([1, 2, 3], index=[1, 2, 3], name='A')
s2 = pd.Series([11, 21, 31], index=[1, 2, 3], name='B')
s3 = pd.Series([12, 23, 34], index=[1, 2, 3], name='C')
df=pd.DataFrame({s1.name:s1,s2.name:s2,s3.name:s3})
print(df)
将series类型的数据按照行形成excel数据
s1 = pd.Series([1, 2, 3], index=[1, 2, 3], name='A')
s2 = pd.Series([11, 21, 31], index=[1, 2, 3], name='B')
s3 = pd.Series([12, 23, 34], index=[1, 2, 3], name='C')
# df=pd.DataFrame({s1.name:s1,s2.name:s2,s3.name:s3})
df=pd.DataFrame([s1,s2,s3])
print(df)
detail = pd.read_excel("F:/桌面杂碎/meal_order_detail.xlsx") # print(detail.shape) # # 查看excel表格中数据量的行数和列数 # print(detail.head()) # # 查看表格中前几行的数据 # print(detail.tail()) # # 查看表格中后几行的数据 print(detail.columns) # 查看表格中列表的属性 处理excel表格中的脏数据 比如 在表格中篡位 前几列的数据不是我们所需要的 detail = pd.read_excel("F:/桌面杂碎/meal_order_detail.xlsx",header=3) 遇到表格中没有列名的 我们可以手动添加 detail = pd.read_excel("F:/桌面杂碎/output.xlsx",header=None) detail.columns=['name','age','sex'] print(detail.columns) detail.set_index('age',inplace=True) detail=pd.to_excel("F:/桌面杂碎/output.xlsx")
补充: import pandas as pd books=pd.read_excel('F:/桌面杂碎/output.xlsx') # 遇到表格不是从顶头起始,我们可以跳跃某些行或者列准确找到表格的位置 books=pd.read_excel('F:/桌面杂碎/output.xlsx',skiprows=3,usecols='C:F') # 表示跳过前三行 从c列开始读数据 读到F为止 print(books)
利用at和循环实现excel的自动填充(注意写法)
import pandas as pd
df = pd.read_excel('F:/桌面杂碎/output.xlsx', skiprows=7, usecols='I:N',dtype={'ID':str})
print(df.columns)
for i in df.index:
df['ID'].at[i] = i+1
df.to_excel('F:/桌面杂碎/output.xlsx')
print('done!')
df = pd.read_excel('F:/桌面杂碎/output.xlsx') df.set_index('ID',inplace=True) df['trade'] = df['Price'] * df['discount'] # 在pandas中数据间的操作是以series为单位的,并不是一个值一个值的操作 print(df)
这种方法相比于上面的方法要麻烦,比较适用于只对某一段内容进行操作
df = pd.read_excel('F:/桌面杂碎/output.xlsx') df.set_index('ID', inplace=True) # df['trade'] = df['Price'] * df['discount'] # 在pandas中数据间的操作是以series为单位的,并不是一个值一个值的操作 for i in range(2, 4): df['trade'].at[i] = df['Price'].at[i] * df['discount'].at[i] print(df) 用两种方法实现数据操作
1、数据间的操作是以列为单位进行操作
df = pd.read_excel('F:/桌面杂碎/output.xlsx') df.set_index('ID', inplace=True) df['Price'] = df['Price'] + 2 print(df)
2、利用series中的apply函数实现复杂变换 apply括号内的内容为函数的名字 不带括号
def add(x): return x + 2 df['Price']=df['Price'].apply(add) print(df) 利用pandas实现表格数据的多重排序 import pandas as pd df = pd.read_excel('F:/桌面杂碎/output.xlsx') # 按照价格从高到低进行排序 # df.sort_values(by='Price',inplace=True,ascending=False) df.sort_values(by='worthy',inplace=True) # 按照worthy和价格一起排序 df.sort_values(by=['worthy','Price'],inplace=True,ascending=[True,False]) print(df)